क्यों ICollection<T>
IEnumerable<T>
और IEnumerable
दोनों को लागू करता है?ICollection <T> क्यों लागू करता है दोनों IEnumerable <T> और IEnumerable
इसका उद्देश्य क्या है? IEnumerable
लाभ ICollection<T>
कैसे है?
क्यों ICollection<T>
IEnumerable<T>
और IEnumerable
दोनों को लागू करता है?ICollection <T> क्यों लागू करता है दोनों IEnumerable <T> और IEnumerable
इसका उद्देश्य क्या है? IEnumerable
लाभ ICollection<T>
कैसे है?
गैर-जेनेरिक इंटरफ़ेस पिछड़ा संगतता के लिए है। यदि आप जेनेरिक का उपयोग करके कोड लिखते हैं और अपने संग्रह को .NET 1.0 (जिसमें जेनेरिक नहीं है) में लिखे गए कुछ मॉड्यूल में पास करना चाहते हैं, तो भी आप इसे सफल होने के लिए चाहते हैं, और आप चाहते हैं कि पुरानी विधि इसके माध्यम से पुन: सक्रिय हो सके।
IEnumerable<T>
IEnumerable
विरासत में है इसलिए यह ICollection<T>
के लिए भी समझ में आता है। यह सिर्फ वही विरासत बता रहा है जो वैसे भी होगा।
IEnumerable<T>
ही किसी भी कार्यान्वयन मजबूर करता भी गैर सामान्य IEnumerable
लागू करने के लिए। यह सुरक्षित है, उसी कारण से IEnumerable<out T>
.NET 4 के रूप में covariant है ... आप हमेशा गैर-जेनेरिक रूप के लिए T
object
को परिवर्तित कर सकते हैं।
असल में इसका मतलब है कि यदि आपके पास कोड है जो IEnumerable
प्रकार के पैरामीटर का उपयोग करता है, तो भी आप इसे List<T>
जैसे कुछ के साथ कॉल कर सकते हैं।
एरिक Lippert क्यों संग्रह अंत में कई इंटरफेस को लागू करने के बारे में blog post recently लिखा था, और ब्राड अब्राम विशिष्ट IEnumerable<T>
/IEnumerable
निर्णय के बारे में एक blog post back in 2005 लिखा था।
कुछ हद तक समान: [क्यों-करता-i -umerablet-recipient-from-ienumerable?] (Http://stackoverflow.com/questions/221691/why-does-ienumerablet-inherit-from-ienumerable?rq=1) – nawfal