以前のプログラミングでは「配列(Array)」が主流でしたが、現代のC#開発では、サイズを自由に変えられるList<T>をメインに使いこなすのが正解です。
1. 配列とList<T>の違い:なぜListを使うのか?
結論から言うと、「データの数が決まっていないならList」を使います。
| 特徴 | 配列 (string[]) | リスト (List<string>) |
| サイズ | 固定(後から増やせない) | 可変(自由に追加・削除できる) |
| 使いやすさ | 低(不便なことが多い) | 高(便利な機能が豊富) |
| 用途 | 速度重視、数が絶対に変わらない時 | 日常的な開発の 90% 以上 |
2. List<T> の基本的な使い方
List<T>の「T」には、中に入れたい「型」を書きます。
C#
using System.Collections.Generic; // Listを使うために必要
// 1. 作成(文字列を入れるリスト)
List<string> monsters = new List<string>();
// 2. 追加
monsters.Add("スライム");
monsters.Add("ドラキー");
monsters.Add("ゴーレム");
// 3. 削除
monsters.Remove("スライム"); // 名前で削除
monsters.RemoveAt(0); // 0番目(一番最初)を削除
// 4. 数を数える
int count = monsters.Count; // 1 (ゴーレムだけ残っている)
3. 「プロパティ」と「List」を組み合わせる(実戦)
ここが一番重要なポイントです。これまで学んだ「プロパティを持つクラス」をListに入れることで、本物のアプリのようなデータ管理ができます。
C#
public class Student
{
public string Name { get; set; }
public int Score { get; set; }
}
// メインの処理
List<Student> classA = new List<Student>();
// データの追加
classA.Add(new Student { Name = "田中", Score = 85 });
classA.Add(new Student { Name = "佐藤", Score = 92 });
classA.Add(new Student { Name = "鈴木", Score = 70 });
// データの取り出し(foreach文)
foreach (var student in classA)
{
Console.WriteLine($"{student.Name}さんの点数は{student.Score}点です。");
}
4. 魔法の技術「LINQ(リンク)」でデータを操る
Listを使い始めると、必ず「点数が80点以上の人だけ抜き出したい」「名前順に並べ替えたい」という要望が出てきます。これを1行で解決するのがC#の超便利機能 LINQ です。
C#
using System.Linq; // LINQを使うために必要
// 80点以上の生徒だけを抽出して、点数が高い順に並べる
var topStudents = classA
.Where(s => s.Score >= 80) // 条件で絞り込む
.OrderByDescending(s => s.Score) // 並べ替える
.ToList(); // 結果をまたListにする
// 平均点を計算する
double average = classA.Average(s => s.Score);
💡 ポイント: Where や Average など、まるで英単語のように直感的にデータを操作できます。これがC#が「開発効率が良い」と言われる大きな理由の一つです。
まとめ:データ管理の鉄板パターン
- クラスを作る(データの「1件分」の形を決める)
- プロパティで項目を作る(データを保護する)
- List<T> で管理する(複数のデータをまとめる)
- LINQ で加工する(必要なデータだけ取り出す)
この4ステップができるようになれば、C#でのバックエンド開発やゲームロジック作成の基礎は完璧です!

