Предполагая, что тип элементов в file.Headers равен T, вы можете сделать это
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
это создаст пустое перечислимое значение T, если file.Headers имеет значение null. Однако, если тип файла принадлежит вам, я бы Headers
вместо этого рассмотрел возможность изменения получателя . null
является значением unknown, поэтому, если возможно, вместо использования null в качестве «Я знаю, что элементов нет», когда значение null на самом деле (/ изначально) следует интерпретировать как «Я не знаю, есть ли какие-либо элементы», используйте пустой набор для отображения что вы знаете, что в наборе нет элементов. Это также будет DRY'er, поскольку вам не придется так часто выполнять нулевую проверку.
ИЗМЕНИТЬ в качестве продолжения предложения Джонса, вы также можете создать метод расширения, изменив приведенный выше код на
foreach(var header in file.Headers.OrEmptyIfNull()){
}
В случае, если вы не можете изменить получатель, это было бы моим предпочтением, поскольку оно более четко выражает намерение, давая операции имя (OrEmptyIfNull)
Упомянутый выше метод расширения может сделать некоторые оптимизации невозможными для обнаружения оптимизатором. В частности, те, которые связаны с IList с использованием перегрузки метода, могут быть устранены
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}