Suponiendo que el tipo de elementos en file.Headers es T, podría hacer esto
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
esto creará un enumerable vacío de T si file.Headers es nulo. Sin embargo, si el tipo de archivo es de su propiedad, consideraría cambiar el captador de Headers
. null
es el valor de desconocido, así que si es posible, en lugar de usar nulo como "Sé que no hay elementos" cuando nulo en realidad (/ originalmente) debe interpretarse como "No sé si hay elementos", use un conjunto vacío para mostrar que sabes que no hay elementos en el conjunto. Eso también sería DRY'er ya que no tendrá que hacer la verificación nula con tanta frecuencia.
EDITAR como seguimiento de la sugerencia de Jon, también puede crear un método de extensión cambiando el código anterior a
foreach(var header in file.Headers.OrEmptyIfNull()){
}
En el caso de que no pueda cambiar el getter, este sería mi preferido, ya que expresa la intención más claramente al darle un nombre a la operación (OrEmptyIfNull)
El método de extensión mencionado anteriormente puede hacer que ciertas optimizaciones sean imposibles de detectar para el optimizador. Específicamente, aquellos que están relacionados con IList usando métodos de sobrecarga, esto se puede eliminar.
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}