配列、スライス、List<T>、Dictionary<TKey,TValue>
配列を作成して使い、スライスをコピーします。また、動的な項目の管理やキーによる検索にList とDictionary を使います。
「配列、スライス、List<T>、Dictionary<TKey,TValue>」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。
レッスンの概要
目標:適切なコンテナーを選択します。
- Array:固定サイズで高速なインデックスアクセス
- List<T>:サイズが増減する
- Dictionary<TKey,TValue>:キーによる高速な検索
- コピーによる単純な配列スライス
Array の基礎
配列は固定サイズで、インデックスによるアクセスが可能です。Lengthとゼロベースのインデックスを使用します。
using System;
public class Program
{
public static void Main(string[] args)
{
int[] nums = new int[] { 10, 20, 30 };
Console.WriteLine("Length = " + nums.Length);
Console.WriteLine("First = " + nums[0]);
Console.WriteLine("Last = " + nums[nums.Length - 1]);
// Update by index
nums[1] = 25;
Console.WriteLine("Updated middle = " + nums[1]);
}
}
コピーによる配列スライス
C# 6 には範囲演算子がありません。Array.Copyを使用する小さなヘルパーを作成して、スライスをコピーします。
using System;
public class Program
{
// Copy a slice [start, start+count) into a new array
public static int[] Slice(int[] src, int start, int count)
{
int[] dst = new int[count];
Array.Copy(src, start, dst, 0, count);
return dst;
}
public static void Main(string[] args)
{
int[] data = new int[] { 5, 6, 7, 8, 9 };
int[] middle = Slice(data, 1, 3); // {6,7,8}
Console.WriteLine("Slice len=" + middle.Length + " first=" + middle[0] + " last=" + middle[middle.Length - 1]);
}
}
List<T> の基礎
List<T>は自動的にサイズを変更します。Add/Insert/RemoveとCountを使用します。
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
List<string> items = new List<string>();
items.Add("apple");
items.Add("banana");
items.Insert(1, "kiwi"); // apple, kiwi, banana
Console.WriteLine("Count = " + items.Count);
Console.WriteLine("Second = " + items[1]);
items.Remove("apple");
Console.WriteLine("After remove, first = " + items[0]);
}
}
Dictionary の基礎
Dictionaryはキーと値のペアを格納します。安全に検索するには、ContainsKey/TryGetValueを使用します。
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Ada"] = 28; // add
ages["Alan"] = 35; // add
ages["Alan"] = 36; // update
int value;
if (ages.TryGetValue("Ada", out value))
{
Console.WriteLine("Ada age = " + value);
}
Console.WriteLine("Has Grace? " + ages.ContainsKey("Grace"));
}
}
コレクションの選択
選択基準:
- 固定サイズで数値インデックスを使う場合はArray
- サイズが変化する場合はList<T>
- 一意のキーがある場合はDictionary<K,V>
- Array.Copyヘルパーでスライスをコピーする
キーによる検索に適したコレクション
まとめ
まとめ:配列は固定サイズです。Array.Copyでスライスをコピーします。動的なリストにはList<T>、キーによる高速な検索にはDictionary<K,V>を使用します。
よくある質問
「配列、スライス、List<T>、Dictionary<TKey,TValue>」レッスンは無料ですか?
はい。「配列、スライス、List<T>、Dictionary<TKey,TValue>」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。
「配列、スライス、List<T>、Dictionary<TKey,TValue>」で何を学びますか?
配列を作成して使い、スライスをコピーします。また、動的な項目の管理やキーによる検索にList とDictionary を使います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「配列、スライス、List<T>、Dictionary<TKey,TValue>」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 配列、スライス、List 、Dictionary
- foreachのパターンとコレクション初期化子
- LINQプレビュー:Where、Select、OrderBy、Take/Skip、遅延実行