[C#] List<T>.Find()メソッドの解説

List<T>.Find()メソッドについて自分用にまとめます。詳しくは以下を参照してください。

List.Find(Predicate) メソッド (System.Collections.Generic)
指定された述語によって定義された条件と一致する要素を検索し、List<T> 全体の中で最もインデックス番号の小さい要素を返します。

定義と仕組み

定義された条件と一致する要素を検索し、List<T>全体の中で最もインデックス番号の小さい要素を返すメソッドです。引数には Predicate<T>型のメソッドを、返値には T をもちます。

C#
public T Find(Predicate<T> match);

この Predicate<T> という型は、「T型の引数を受け取って bool を返す関数」のことです。
つまり、Find() はこう動きます。

  1. リストの各要素を1つずつ取り出す
  2. その要素を引数として match 関数に渡す
  3. match が true を返したら、その要素を結果として返す

例1:ラムダ式を使う場合(一般的)

C#
static void Main()
{
    List<int> numbers = new List<int> { 3, 7, 10, 15, 20 };

    // 10以上の最初の要素を探す
    int result = numbers.Find(x => x >= 10);
    
    Console.WriteLine(result); // 出力:10
}

例2:別メソッドを渡す場合

C#
static bool IsEven(int number)
{
    return number % 2 == 0;
}

static void Main()
{
    List<int> numbers = new List<int> { 3, 7, 10, 15, 20 };

    // 偶数を探す
    int result = numbers.Find(IsEven);
    
    Console.WriteLine(result); // 出力:10
}

コメント

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