C#入門⑫ List ── あとから増やせる、便利なまとまり
前回は「配列(たくさんのデータをまとめて持つ箱)」をやりました。
今回は、配列によく似ているけれど、もっと柔軟なList(リスト)です。実際の開発では、配列よりこちらをよく使います。
List とは、あとから増やしたり減らしたりできる、まとまりです。
配列の、ちょっと不便なところ
前回の配列には、ひとつ不便な点がありました。最初に決めた個数を、後から変えられないのです。
int[] scores = { 80, 95, 70 }; // 3個で確定
この後で「4人目の点数を追加したい」と思っても、配列のままでは簡単にはできません。弁当箱の仕切りの数が、最初から固定されているようなものです。
でも実際の開発では、「データが何個になるか、最初は分からない」ことがほとんどです。お客さんが何人来るか、買い物カゴに何個入れるか、やってみないと分かりません。
そこで使うのが List です。あとから自由に、増やしたり減らしたりできます。
書き方を見てみる
List を作って、データを追加してみます。
List<int> scores = new List<int>();
scores.Add(80);
scores.Add(95);
scores.Add(70);
少し記号が増えましたが、ひとつずつ見れば大丈夫です。
List<int>… 「整数を入れる List」という意味(< >の中に、入れる型を書く)new List<int>()… 空っぽの List を新しく用意する(最初は中身ゼロ)scores.Add(80)… List に 80 を追加する
Add(追加する)を使って、後から1個ずつ入れていけます。最初に個数を決めなくていいのが、配列との大きな違いです。
取り出し方は、配列と同じ
中身を取り出すときは、配列と同じく番号(0から始まる)を使います。
Console.WriteLine(scores[0]); // 80
Console.WriteLine(scores[1]); // 95
くり返しと組み合わせるのも、配列と同じです。
for (int i = 0; i < scores.Count; i++)
{
Console.WriteLine(scores[i]);
}
ひとつだけ違うのは、個数の調べ方です。
- 配列は
.Length(長さ) - List は
.Count(数)
名前は違いますが、「中身が何個あるか」という意味は同じです。
List にできる、便利なこと
List は、追加だけでなく、いろいろなことができます。よく使うものを挙げておきます。
scores.Add(60); // 末尾に追加
scores.Remove(95); // 95 という値を削除
scores.Count; // 個数を調べる
scores.Contains(80); // 80 が含まれているか(true / false)
「追加する」「削除する」「含まれているか調べる」。配列ではひと手間かかることが、List なら一言で書けます。この手軽さが、List がよく使われる理由です。
配列と List、どう使い分けるか
ここがいちばん大事なところです。
- 配列 … 個数が最初から決まっている。サイズが変わらないとき
- List … 個数が決まっていない。あとから増減するとき
たとえば「曜日(7個で固定)」なら配列でいい。
「カートに入れた商品(増えたり減ったりする)」なら List。
迷ったら、「後から個数が変わるか?」を考えてみてください。変わるなら List。実際の開発では変わることが多いので、List を使う場面の方が多いです。
つまずきポイント
初心者がつまずくのが、最初に new で用意するのを忘れることです。
List<int> scores; // 箱の名前だけ作って、中身を用意していない
scores.Add(80); // まだ List の実体がない!エラー
List は、new List<int>() で実体を用意してから使います。配列のように { } でいきなり中身を書くのと違い、「まず空の List を作る」というひと手間が必要です。
「List は、new してから使う」。セットで覚えておきましょう。
まとめ
List は、あとから増減できる、柔軟なまとまり。
List<int> scores = new List<int>();
scores.Add(80); // 追加
Console.WriteLine(scores[0]); // 取り出しは番号(0から)
Addで追加、Removeで削除、.Countで個数- 個数が固定なら配列、変わるなら List
- 使う前に
newで実体を用意する
次回は、配列や List の中身を、もっとラクに全部取り出せる foreach を紹介します。

