前回は「配列(たくさんのデータをまとめて持つ箱)」をやりました。

今回は、配列によく似ているけれど、もっと柔軟な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 を紹介します。