यह मानते हुए कि फ़ाइल में तत्वों के प्रकार। Headers T है आप ऐसा कर सकते हैं
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
यदि फ़ाइल रिक्त हो तो यह टी का एक खाली स्थान बना देगा। यदि फ़ाइल का प्रकार एक प्रकार है जिसका आप स्वयं स्वामी हैं, हालाँकि, Headersइसके बदले गेटर बदलने पर विचार करें । nullअज्ञात का मान है इसलिए यदि संभव हो तो अशक्त के रूप में उपयोग करने के बजाय "मुझे पता है कि कोई तत्व नहीं हैं" जब अशक्त वास्तव में (/ मूल रूप से) की व्याख्या की जानी चाहिए "मुझे नहीं पता कि क्या कोई तत्व हैं" दिखाने के लिए एक खाली सेट का उपयोग करें कि आप जानते हैं कि सेट में कोई तत्व नहीं हैं। यह भी DRY'er होगा क्योंकि आपको नल की जांच अक्सर नहीं करनी होगी।
संपादित एक के रूप में Jons सुझाव पर अनुवर्ती कार्रवाई, आप भी एक विस्तार विधि के लिए ऊपर दिए गए कोड को बदलने बना सकते हैं
foreach(var header in file.Headers.OrEmptyIfNull()){
}
उस स्थिति में जहां आप गेट्टर को बदल नहीं सकते हैं, यह मेरा खुद का पसंदीदा होगा क्योंकि यह ऑपरेशन को एक नाम देकर अधिक स्पष्ट रूप से इरादा व्यक्त करता है (OrEmptyIfNull)
ऊपर उल्लिखित विस्तार विधि ऑप्टिमाइज़र का पता लगाने के लिए कुछ अनुकूलन को असंभव बना सकती है। विशेष रूप से, जो इस पद्धति को ओवरलोडिंग का उपयोग करके IList से संबंधित हैं, उन्हें समाप्त किया जा सकता है
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}