C#のListについて

プログラム

エンジニアの現場では「配列よりも圧倒的に使われている」このList型について、なぜ便利なのか、どういう仕組みなのかを初心者向けに分かりやすく解説します。


1. 配列とList、最大の違いは「◯◯できるか」

結論から言うと、配列とListの決定的な違いはこれです。

  • 配列 (Array):サイズが「固定」
  • List (List<T>):サイズが「可変」

配列の弱点

配列は、最初に「3個入る箱」と決めたら、後からそれを4個用に変えることは絶対にできません

もし無理やり4個目のデータを入れようとすると、プログラムは「入らないよ!」とエラーを出して停止します。これが配列の「固定」という性質です。

Listの強み:入れ物が「ヤドカリ」のような柔軟さ

一方、Listは「可変(Variable)」です。 最初は小さく作っておいて、データが増えれば自動的に大きくなり、減れば詰めてくれます。

実務において、データの数が最初から最後まで完全に決まっていることは稀です。だからこそ、柔軟な List が重宝されるのです。


2. 実践!Listを使ってみよう

使い方は驚くほど簡単です。 まずはファイルの先頭に using System.Collections.Generic; と書かれていることを確認してください。

① 作る(宣言)

// 整数を入れるリストを作成
// 名称はpointsの場合   ()の中身は空でOK! 
List<int> points = new List<int>();

② 追加する(Add)

配列だと面倒な「追加」も、メソッド一つで完了です。

points.Add(100); // これでサイズが1になる
points.Add(50);  // これでサイズが2になる
points.Add(80);  // これでサイズが3になる

限界を気にせず、どんどん .Add() してOKです。

③ 削除する(Remove)

配列でデータを消すと「空席(nullや0)」が残りますが、Listは違います。

points.Remove(50); 
// 50が消えて、後ろにあった80が自動的に前に詰めます。
// 中身:[100, 80]

この「自動で詰めてくれる」機能こそが、Listを使う最大のメリットの一つです。


3. ちょっと待って!「Listも実は固定」って本当?

ここで、一歩進んだエンジニアを目指すあなたに「Listの真実」をお話しします。

「Listは無限に入る魔法の箱」と言いましたが、実はコンピュータのメモリ(記憶装置)の仕組み上、物理的に伸び縮みする箱なんて存在しません。

では、なぜListはサイズが変わるように見えるのでしょうか? それは、Listが「ヤドカリ」だからです。

Listの裏側の仕組み(ヤドカリ戦法)

  1. Listは最初、小さめの「固定の配列(貝殻)」を裏で持っています。
  2. データ(Add)が増えてその貝殻が満杯になると…?
  3. Listは自動的に「2倍のサイズの新しい配列(大きな貝殻)」を用意します。
  4. そして、古いデータを一瞬で引っ越しさせます。

ユーザーである私たちから見ると「箱が大きくなった」ように見えますが、裏では「Listという執事が、バレないように素早く大きな箱に交換してくれている」のです。

ここがポイント! 配列(Array)だと、この「新しい箱を用意して引っ越す」という面倒な作業を人間(あなた)がコードで書かないといけません。 Listなら、それをC#が勝手にやってくれます。これが「Listは便利」と言われる本当の理由です。


4. まだある!Listの便利な機能

Listを使うと、データの操作がパズルのように簡単になります。

  • 並べ替え (Sort) list.Sort(); と書くだけで、中身が小さい順に綺麗に並びます。
  • 検索 (Contains) list.Contains(100); で、そのデータが入っているか(True/False)を一瞬で調べられます。
  • 一括削除 (Clear) list.Clear(); で、中身を全て空っぽにできます。

5. まとめ:まずはListから始めよう

  • データの個数が決まっているなら 配列(曜日、トランプの枚数など)
  • データの個数が変わる可能性があるなら List(TODOリスト、ユーザー一覧、得点履歴など)

迷ったら、まずは List<T> を使うのが現代C#プログラミングの正解です。 「サイズ変更」や「削除後の穴埋め」といった面倒な作業はListに任せて、あなたはもっと楽しい「アプリの機能作り」に集中しましょう!


さらにC#を極めたい方へ

「Listの仕組み、もっと詳しく知りたい」「LINQを使ってListをもっと便利に操作したい」 そう思った方には、体系的に学べる書籍や講座がおすすめです。


コメント