C# 初心者のための List の使い方ガイド

配列より便利な「可変長リスト」をマスターしよう


はじめに

C#でデータをまとめて扱うとき、まず思い浮かぶのは「配列(Array)」でしょう。しかし、あとから要素を追加したり削除したりしたい場合には、List<T> が圧倒的に便利です。

この記事では、C#の List<T> の基本から、使いどころ、注意点までを初心者向けにわかりやすく解説します。


List とは?

List<T> は、ジェネリックコレクションの1つで、「Tのリスト」と読みます。Tの部分には型名(int、string、自作クラスなど)を入れます。

配列との違い

特徴配列(T[]List(List<T>
要素数固定可変
要素追加不可(再作成要)Addメソッドで可能
要素削除不可Removeメソッドで可能
検索・並び替え手動で実装便利なメソッドが豊富

基本的な使い方

List の宣言と初期化

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> fruits = new List<string>();
        fruits.Add("りんご");
        fruits.Add("バナナ");
        fruits.Add("みかん");

        foreach (var fruit in fruits)
        {
            Console.WriteLine(fruit);
        }
    }
}

実行結果

りんご  
バナナ  
みかん

よく使うメソッドとプロパティ

メソッド/プロパティ説明
Add(item)要素を末尾に追加list.Add(“apple")
Remove(item)一致する要素を削除(最初の1つ)list.Remove(“banana")
Count要素数を取得int count = list.Count;
Clear()全要素を削除list.Clear();
Contains(item)指定した要素があるかどうか確認list.Contains(“apple")
IndexOf(item)要素のインデックスを取得(なければ-1)int i = list.IndexOf(“apple")
Insert(index, item)指定位置に要素を挿入list.Insert(1, “grape")
Sort()要素を並び替え(昇順)list.Sort();

List を使うときの注意点

値型と参照型の違い

  • List<int> のような 値型 では、要素を直接保持しています。
  • List<MyClass> のような 参照型 では、要素はオブジェクトへの参照です。
class Person
{
    public string Name { get; set; }
}

List<Person> people = new List<Person>();
var p = new Person { Name = "太郎" };
people.Add(p);
p.Name = "次郎";

Console.WriteLine(people[0].Name); // "次郎"

foreach での削除はNG

foreach (var item in list)
{
    list.Remove(item); // エラーになる可能性あり
}

代わりに逆順 for ループを使うのが安全です。


応用:オブジェクトのリスト

class Enemy
{
    public string Name { get; set; }
    public int HP { get; set; }
}

List<Enemy> enemies = new List<Enemy>
{
    new Enemy { Name = "スライム", HP = 30 },
    new Enemy { Name = "ドラゴン", HP = 300 }
};

foreach (var enemy in enemies)
{
    Console.WriteLine($"{enemy.Name} のHPは {enemy.HP} です");
}

まとめ

List<T> は、可変長で柔軟なデータ構造であり、C#のあらゆる場面で登場します。初学者のうちから使い慣れておくと、配列よりも効率よくコードが書けるようになります。


補足:Listを使ったミニ課題

Q. 「名前リスト」に”さとう”, “たなか”, “すずき”を追加し、五十音順に並び替えて表示せよ

List<string> names = new List<string> { "さとう", "たなか", "すずき" };
names.Sort();

foreach (var name in names)
{
    Console.WriteLine(name);
}
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 名前リストの作成と初期化
        List<string> names = new List<string> { "さとう", "たなか", "すずき" };

        // 五十音順に並び替え(Sortは文字列の辞書順で並び替える)
        names.Sort();

        // 並び替えた名前を表示
        foreach (var name in names)
        {
            Console.WriteLine(name);
        }
    }
}

次に学ぶと良いもの

  • Dictionary<TKey, TValue>:名前と値のペアを管理できる
  • LINQ:リストを検索・変換する高機能なツール群
  • ReadOnlyCollection<T>:読み取り専用にしてリストの安全性を高める

訪問数 6 回, 今日の訪問数 1回

C#,List

Posted by hidepon