C#でListを使いこなす基本と実践テクニック

#のプログラミングでよく使われる「List」は、配列よりも柔軟にデータを扱える便利なコレクション型の一つです。複数の値を簡単に追加・削除・検索・並び替えできるため、業務アプリケーションやゲーム開発など、さまざまな場面で重宝されています。本記事では、Listの基本的な使い方から、実践的な活用方法までを丁寧に解説します。初心者の方でも理解しやすいように、サンプルコードとともにご紹介していきます。


Listとは?基本概念と宣言方法

C#のList<T>は、System.Collections.Generic名前空間に属しているジェネリックコレクションです。Tはリストに格納するデータ型を示し、List<int>List<string>など、型指定を行うことで柔軟なデータ管理が可能になります。

using System.Collections.Generic;

List<int> numbers = new List<int>();
List<string> names = new List<string>();

配列と異なり、要素数を気にせずに追加や削除が簡単にできるのが大きな魅力です。


要素の追加方法

Listに要素を追加するには、Add()メソッドを使用します。

List<string> fruits = new List<string>();
fruits.Add("りんご");
fruits.Add("バナナ");
fruits.Add("みかん");

また、複数の要素を一度に追加したい場合は、AddRange()メソッドを使います。

fruits.AddRange(new List<string> { "スイカ", "ぶどう" });

要素の取得と更新

リストの要素にアクセスするには、インデックスを使います。インデックスは0から始まります。

string firstFruit = fruits[0]; // "りんご"
fruits[1] = "メロン"; // バナナをメロンに置き換える

リストのサイズはCountプロパティで確認できます。

int count = fruits.Count;

要素の削除方法

特定の要素を削除するには、以下のメソッドがあります:

  • Remove(value):最初に見つかった一致要素を削除
  • RemoveAt(index):指定したインデックスの要素を削除
  • Clear():すべての要素を削除
fruits.Remove("りんご");
fruits.RemoveAt(0);
fruits.Clear();

ループでListを操作する

Listの要素を順番に処理するには、foreach文やfor文を使うことが一般的です。

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

for (int i = 0; i < fruits.Count; i++)
{
Console.WriteLine(fruits[i]);
}

Listの検索とフィルター

要素を探すためには、以下のようなメソッドを使います:

  • Contains(value):特定の要素が存在するか確認
  • IndexOf(value):最初に一致した要素のインデックスを取得
  • Find(predicate):条件に一致する最初の要素を取得
  • FindAll(predicate):条件に一致するすべての要素を取得
bool hasApple = fruits.Contains("りんご");
int index = fruits.IndexOf("みかん");

string found = fruits.Find(f => f.StartsWith("み"));
List<string> results = fruits.FindAll(f => f.Length > 3);

Listの並び替えと逆順

リストの並び替えにはSort()メソッドを使います。逆順にするにはReverse()メソッドを使います。

fruits.Sort();    // 昇順に並び替え
fruits.Reverse(); // 順序を逆にする

独自の並び順を指定したい場合は、ラムダ式を渡すこともできます。

csharpコピーする編集するfruits.Sort((a, b) => b.Length.CompareTo(a.Length)); // 長さの降順でソート

オブジェクトのListを使う

Listには独自のクラスのインスタンスも格納できます。

public class Product
{
public string Name { get; set; }
public int Price { get; set; }
}

List<Product> products = new List<Product>
{
new Product { Name = "ノート", Price = 200 },
new Product { Name = "ペン", Price = 100 }
};

検索や並び替えも、オブジェクトのプロパティに基づいて行えます。

Product cheap = products.Find(p => p.Price < 150);
products.Sort((x, y) => x.Price.CompareTo(y.Price));

LINQでさらに便利に

LINQを使うと、Listの操作がより直感的に行えます。

var expensive = products.Where(p => p.Price > 150).ToList();
var names = products.Select(p => p.Name).ToList();

LINQは読みやすく、メンテナンス性の高いコードを実現できます。


実用例:ユーザーからの入力をListに格納して表示

List<string> names = new List<string>();

Console.WriteLine("名前を入力してください(空白で終了):");
while (true)
{
string input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input)) break;
names.Add(input);
}

Console.WriteLine("入力された名前一覧:");
foreach (string name in names)
{
Console.WriteLine(name);
}

まとめ

C#のList<T>は非常に強力で柔軟なコレクションです。要素の追加・削除、検索、並び替え、LINQとの連携まで幅広い操作が可能です。配列よりも柔軟性が高く、現代的なC#プログラミングには欠かせない存在です。今回の内容を押さえておけば、実際の開発でも自信を持ってListを活用できるでしょう。

タイトルとURLをコピーしました