Якщо припустити, що тип елементів у файлі. Headers - T, ви можете це зробити
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
це створить порожній перелік T, якщо file.Headers має значення null. Якщо тип файлу є типом, яким ви володієте, я, однак, міркував би про те, щоб замінити Headers
замість нього гетер . null
це значення невідомого, тому, якщо можливо, замість використання 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>();
}