Dengan asumsi bahwa jenis elemen dalam file.Headers adalah T, Anda dapat melakukan ini
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
ini akan membuat enumerable T yang kosong jika file.Headers adalah null. Jika tipe file adalah tipe yang Anda miliki, saya akan, bagaimanapun, pertimbangkan untuk mengubah pengambil Headers
alih - alih. null
adalah nilai tidak diketahui jadi jika memungkinkan daripada menggunakan null sebagai "Saya tahu tidak ada elemen" ketika null sebenarnya (/ aslinya) harus diartikan sebagai "Saya tidak tahu apakah ada elemen" gunakan set kosong untuk menunjukkan bahwa Anda tahu tidak ada elemen di himpunan. Itu juga akan lebih KERING karena Anda tidak perlu melakukan pemeriksaan null sesering mungkin.
EDIT sebagai tindak lanjut dari saran Jons, Anda juga dapat membuat metode ekstensi dengan mengubah kode di atas menjadi
foreach(var header in file.Headers.OrEmptyIfNull()){
}
Dalam kasus di mana Anda tidak dapat mengubah pengambil, ini akan menjadi pilihan saya sendiri karena ini mengungkapkan maksud lebih jelas dengan memberi nama operasi (OrEmptyIfNull)
Metode ekstensi yang disebutkan di atas mungkin membuat pengoptimalan tertentu tidak mungkin dideteksi oleh pengoptimal. Secara khusus, yang terkait dengan IList menggunakan metode overloading ini dapat dihilangkan
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}