Fun Coding

学んだことを記録していきます!

【C#】リストの最初の要素を取得する方法 まとめ

リストの最初の要素を取得するメソッドは3つあります。

方法
メソッド名
Find
First
FirstOrDefault
共通の仕様

どれも指定した条件に一致する要素を検索し、最もインデックスが小さい要素を返す。

先頭から検索し、最初の要素を返すイメージ。

異なる仕様
方法
メソッド名
条件に一致する要素がない場合
条件がない場合
Find リストの要素の型のデフォルト値を返す ビルドエラーとなる
First InvalidOperationExceptionが発生する 先頭の要素を返す
FirstOrDefault リストの要素の型のデフォルト値を返す 先頭の要素を返す

コード
using System;
using System.Collections.Generic;
using System.Linq;

namespace Sample {
    /// <summary>
    /// メインプログラム
    /// </summary>
    public class Program {
        /// <summary>
        /// 方法の比較
        /// </summary>
        static void Main() {
            // リストを生成
            var list = new List<int>();

            // リストに値を追加
            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);
            list.Add(5);
            list.Add(6);


            // 条件がない場合の検索
            int result1; /* = list.Find(); */
            int result2 = list.First();
            int result3 = list.FirstOrDefault();

            Console.WriteLine("条件がない場合の検索");
            Console.WriteLine("Find : ビルドエラー");
            Console.WriteLine("First : " + result2);
            Console.WriteLine("FirstOrDefault : " + result3);
            Console.WriteLine();


            // 条件に一致する要素がある場合の検索
            result1 = list.Find(n => n % 2 == 0);
            result2 = list.First(n => n % 2 == 0);
            result3 = list.FirstOrDefault(n => n % 2 == 0);

            Console.WriteLine("条件に一致する要素がある場合の検索");
            Console.WriteLine("Find : " + result1);
            Console.WriteLine("First : " + result2);
            Console.WriteLine("FirstOrDefault : " + result3);
            Console.WriteLine();


            // 条件に一致する要素がない場合の検索
            result1 = list.Find(n => n % 2 == 2);
            /* result2 = list.First(n => n % 2 == 2); */
            result3 = list.FirstOrDefault(n => n % 2 == 2);

            Console.WriteLine("条件に一致する要素がない場合の検索");
            Console.WriteLine("Find : " + result1);
            Console.WriteLine("First : System.InvalidOperationException");
            Console.WriteLine("FirstOrDefault : " + result3);
            Console.WriteLine();
        }
    }
}
出力
条件がない場合の検索
Find : ビルドエラー
First : 1
FirstOrDefault : 1

条件に一致する要素がある場合の検索
Find : 2
First : 2
FirstOrDefault : 2

条件に一致する要素がない場合の検索
Find : 0
First : System.InvalidOperationException
FirstOrDefault : 0