C# 2-4 「複数のデータ」を扱う際、最も頻繁に使われ、かつ強力なのがList(リスト)

以前のプログラミングでは「配列(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);

💡 ポイント: WhereAverage など、まるで英単語のように直感的にデータを操作できます。これがC#が「開発効率が良い」と言われる大きな理由の一つです。


まとめ:データ管理の鉄板パターン

  1. クラスを作る(データの「1件分」の形を決める)
  2. プロパティで項目を作る(データを保護する)
  3. List<T> で管理する(複数のデータをまとめる)
  4. LINQ で加工する(必要なデータだけ取り出す)

この4ステップができるようになれば、C#でのバックエンド開発やゲームロジック作成の基礎は完璧です!