【C#】List の Find() や FirstOrDefault() で要素が見つからない場合

C#

この記事の内容

List<T> の Find() や FirstOrDefault() で要素が見つからない場合に、どのような値が返ってくるかを書いています。

数値のリスト

数値のリストの検索において、一致する内容が見つからない場合、Find() や FirstOrDefault() はゼロを返します。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

        // Findメソッドの例
        int foundNumber = numbers.Find(x => x == 6);
        Console.WriteLine("result: " + foundNumber);
    }
}

実行結果

result: 0

文字列のリスト

文字列のリストの検索において、一致する内容が見つからない場合、Find() や FirstOrDefault() は null を返します。

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> stringList = new List<string>
        {
            "Apple",
            "Banana",
            "Cherry",
            "Date"
        };

        // Findメソッドの例
        string result = stringList.Find(s => s == "Orange");

        // 結果の出力
        if (result != null)
        {
            Console.WriteLine($"result: {result}");
        }
        else
        {
            Console.WriteLine("No matching element found.");
        }
    }
}

実行結果

No matching element found.

構造体の場合

構造体のリストの検索において、一致する内容が見つからない場合、Find() や FirstOrDefault() はメンバをゼロ初期化した構造体を返します。

using System;
using System.Collections.Generic;

struct Point
{
    public int X { get; set; }
    public int Y { get; set; }
}

class Program
{
    static void Main()
    {
        List<Point> points = new List<Point>
        {
            new Point { X = 1, Y = 2 },
            new Point { X = 3, Y = 4 },
            new Point { X = 5, Y = 6 }
        };

        // Findメソッドの例
        Point foundPoint = points.Find(p => p.X == 7);
        Console.WriteLine($"result: X={foundPoint.X}, Y={foundPoint.Y}");
    }
}

実行結果

result: X=0, Y=0

クラスの場合

クラスのリストの検索において、一致する内容が見つからない場合、Find() や FirstOrDefault() は null を返します。

using System;
using System.Collections.Generic;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { Name = "Alice", Age = 25 },
            new Person { Name = "Bob", Age = 30 },
            new Person { Name = "Charlie", Age = 22 }
        };

        // Findメソッドの例
        Person foundPerson = people.Find(p => p.Name == "David");
        Console.WriteLine("result: " + (foundPerson == null ? "null" : foundPerson.Name));
    }
}

実行結果

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