Dosyadaki öğelerin türünün Başlıklar T olduğunu varsayarsak, bunu yapabilirsiniz
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
bu boş bir T if dosya numaralandırması oluşturur. Başlıklar null. Dosya türü sahip olduğunuz bir türse, Headers
bunun yerine alıcıyı değiştirmeyi düşünün . null
bilinmeyen değeridir, bu nedenle mümkünse null kullanmak yerine "Öğelerin olmadığını biliyorum" yerine null (/ orijinal) "herhangi bir öğe olup olmadığını bilmiyorum" olarak yorumlanmalıdır, göstermek için boş bir küme kullanın sette hiç öğe olmadığını bildiğinizi. Bu aynı zamanda DRY'er olurdu, çünkü sıfır kontrolünü sık sık yapmanız gerekmeyecek.
Jons önerisinin devamı olarak DÜZENLE , ayrıca yukarıdaki kodu değiştirerek bir uzantı yöntemi de oluşturabilirsiniz.
foreach(var header in file.Headers.OrEmptyIfNull()){
}
Alıcıyı değiştiremediğiniz durumda, operasyona bir isim vererek (OrEmptyIfNull) niyeti daha net ifade ettiği için bu benim tercihim olur.
Yukarıda bahsedilen uzantı yöntemi, optimize edicinin algılamasını imkansız kılabilir. Özellikle, yöntem aşırı yükleme kullanan IList ile ilgili olanlar ortadan kaldırılabilir.
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}