コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】null 許容の SequenceEqual

ソースコード

public static bool SequenceEqualAllowedNull<TSource>
(
    this IEnumerable<TSource> self,
    IEnumerable<TSource>      second
)
{
    return self switch
    {
        null when second == null => true,
        null                     => false,
        _                        => second != null && self.SequenceEqual( second )
    };
}

使用例

var      array1 = Array.Empty<string>();
string[] array2 = null;

Debug.Log( array1.SequenceEqualAllowedNull( array2 ) );                // False
Debug.Log( array2.SequenceEqualAllowedNull( array1 ) );                // False
Debug.Log( array1.SequenceEqualAllowedNull( Array.Empty<string>() ) ); // True
Debug.Log( array2.SequenceEqualAllowedNull( null ) );                  // True