Supondo que o tipo de elementos no arquivo. Cabeçalhos é T, você poderia fazer isso
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
//do stuff
}
isso criará um enumerável vazio de T se file.Headers for null. Se o tipo de arquivo for um tipo seu, eu, entretanto, consideraria alterar o getter de Headers
. null
é o valor de desconhecido, então, se possível, em vez de usar nulo como "Eu sei que não há elementos", quando nulo na verdade (/ originalmente) deve ser interpretado como "Não sei se há algum elemento", use um conjunto vazio para mostrar que você sabe que não há elementos no conjunto. Isso também seria mais seco, pois você não terá que fazer a verificação de nulos com tanta frequência.
EDITAR seguindo a sugestão de Jons, você também pode criar um método de extensão alterando o código acima para
foreach(var header in file.Headers.OrEmptyIfNull()){
//do stuff
}
No caso em que você não pode alterar o getter, seria a minha preferência, pois expressa a intenção de forma mais clara, dando um nome à operação (OrEmptyIfNull)
O método de extensão mencionado acima pode tornar certas otimizações impossíveis para o otimizador detectar. Especificamente, aqueles que estão relacionados a IList usando a sobrecarga de método podem ser eliminados
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}