Supponendo che il tipo di elementi in file.Headers sia T, potresti farlo
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
//do stuff
}
questo creerà un enumerabile vuoto di T se file.Headers è nullo. Se il tipo di file è un tipo che possiedi, tuttavia, prenderei in considerazione la possibilità di cambiare il getter di Headers
.null
èil valore di unknown quindi se possibile invece di usare null come "So che non ci sono elementi" quando null in realtà (/ originariamente) dovrebbe essere interpretato come "Non so se ci sono elementi" usa un set vuoto per mostrare che sai che non ci sono elementi nel set. Sarebbe anche DRY'er dal momento che non dovrai fare il controllo nullo così spesso.
EDIT come seguito al suggerimento di Jons, potresti anche creare un metodo di estensione cambiando il codice sopra in
foreach(var header in file.Headers.OrEmptyIfNull()){
//do stuff
}
Nel caso in cui non sia possibile modificare il getter, questo sarebbe il mio preferito poiché esprime l'intenzione in modo più chiaro dando un nome all'operazione (OrEmptyIfNull)
Il metodo di estensione sopra menzionato potrebbe rendere impossibili da rilevare alcune ottimizzazioni per l'ottimizzatore. In particolare, quelli correlati a IList che utilizzano il sovraccarico del metodo possono essere eliminati
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}