file.Headers の要素のタイプが T であると仮定すると、これを行うことができます
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
//do stuff
}
file.Headers が null の場合、これは T の空の列挙型を作成します。ただし、ファイルのタイプが所有しているタイプである場合は、Headers
代わりにゲッターを変更することを検討してください。null
は不明の値であるため、可能であれば、「要素がないことはわかっている」として null を使用する代わりに、実際に (/元々) null を「要素があるかどうかわからない」と解釈する必要がある場合は、空のセットを使用して表示しますセットに要素がないことがわかっていること。nullチェックを頻繁に行う必要がないため、これはDRY'erでもあります。
Jonsの提案のフォローアップとしてEDIT 、上記のコードを次のように変更する拡張メソッドを作成することもできます
foreach(var header in file.Headers.OrEmptyIfNull()){
//do stuff
}
ゲッターを変更できない場合は、操作に名前 (OrEmptyIfNull) を付けることで意図がより明確に表現されるため、これが私の好みです。
上記の拡張メソッドにより、特定の最適化がオプティマイザで検出できなくなる場合があります。具体的には、これをオーバーロードするメソッドを使用して IList に関連するものを削除できます
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}