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回
ディスカッション
コメント一覧
まだ、コメントがありません