List

おおざっぱに言えば、Listは配列のようなもの。実際に配列と同じように 「角カッコ[]による要素の取得」やforeachが利用できる。 決定的に異なるのは、Listでは要素の削除・追加が可能であるという点である。 (配列では後からの要素追加・削除はできない。)

Listクラスに用意されているインスタンスメソッド(list1はListクラスのインスタンス.)

list1.Count; list1の要素数。(注:Lengthは使用できない.)
list1.Add(item); list1にitemを加える。
list1.Clear(); list1の要素をすべて消去する。
list1.Insert(index,item); list1の指定位置(index)にitemを挿入する。
list1.Remove(item); list1のはじめのitemだけ削除。2つ目は削除しない。
list1.RemoveAt(index); list1の指定したインデックス番目の要素を削除。
list1.AddRange(list2); list1にlist2を連結する。

基本的使用法

様々なデータ型を要素として持つリストを考えることができる。まずは基本的な int型のリストからその使用法を確認する。

int型データを要素に持つ配列

List<int> list = new List<int>();
list.Add(3);
list.Add(4);
list.Add(5);
foreach (var item in list)
{
    Console.WriteLine(item);
}

実行結果.

3
4
5

解説.

最初の行

List<int> list = new List<int>();

で変数listを、int型データを持つリストとして定義している。List<int> の < > 中に用意したい要素のデータ型をいれる。

配列と同様にリストについてもforeachが利用できる。

別にリストを初期化する方法も用意されている。

コレクション初期化子を用いた初期化方法

List<int> list = new List<int> { 3, 4, 5 };
foreach (var item in list)
{
    Console.WriteLine(item);
}

実行結果.

3
4
5

解説.

最初の行

List<int> list = new List<int> { 3, 4, 5 };

インスタンスの宣言と初期化を行っている。配列と初期化方法が少し異なり、

右辺の new List<int> { 3, 4, 5 }; を配列のように { 3, 4, 5 }; とすることはできない。

文字列のリスト

List<string> list = new List<string> { "x0","x1","x2" };
foreach (var item in list)
{
    Console.WriteLine(item);
}
Console.WriteLine("要素を後から追加.");
list.Add("x3");
Console.WriteLine(list[3]);

実行結果.

x0
x1
x2
要素を後から追加.
x3

解説.

このようにリストでは初期化したあとで、要素を追加することができる。