मेरी व्यक्तिगत कोडिंग शैली Enumerable.OfType<T>()
से संबंधित है। मैं हर जगह इसका उपयोग करता हूं, यह थोड़ा सा समझ में आता है। विशेष रूप से IEnumerable<T>
शक्तिशाली linqToObject कार्यक्षमता की अनुमति देता है। मुझे ऑब्जेक्ट कोलेक्शन जैसे "प्रकार-असुरक्षित" लूपिंग से नफरत है जैसे नीचे नमूने। अब मेरे पास इन "UnGenericCollections" में लूपिंग के बारे में कुछ प्रश्न हैं।सी #, objectCollection.OfType <T>() और foreach (ऑब्जेक्ट कोलेक्शन में टी आइटम), IENumerable <T>
ConfigurationSectionCollection
HttpModuleCollection
SPBaseCollection
SPFieldCollection
ArrayList
- इतने पर ...
प्रश्न 1: यदि मैं इस ArrayList
से Enumerable<T>
को सरल फ़ोरैच/if-check के साथ तुलना में अतिरिक्त लूप कितना बड़ा रूपांतरित करता हूं?
var ark = new ArrayList();
ark.Add(new Human());
ark.Add(new Human());
ark.Add(new Animal());
बजाय:
foreach (object passenger in ark)
{
if (passanger is Human) { }
if (passanger is Animal) { }
}
मैं का उपयोग करें:
foreach (var human in ark.OfType<Human>())
{
}
foreach (var animal in ark.OfType<Animal>())
{
}
प्रश्न 2: एक अलग टाइप चर, कास्टिंग के जो रास्ते में एक foreach पाश के दौरान/परिवर्तित हो जाएगा उपयोग किया गया? क्या यह एक भाषा सुविधा है या क्या यह बॉक्स से बाहर काम करता है?
foreach (Human human in ark) { }
मेरी भयानक अंग्रेजी को धीरज रखने के लिए धन्यवाद। सादर, बेंजामिन
संपादक नोट: भयानक अंग्रेजी को सही किया गया है। – Amy