तर्क के साथ / साथ बॉक्स के बाहर सोचने की कोशिश करें और अपने प्रश्न में इन तीन इंटरफेस को स्पष्ट रूप से समझें:
जब कुछ उदाहरणों का वर्ग System.Collection.IEnumerable इंटरफ़ेस को लागू करता है, तब सरल शब्दों में, हम कह सकते हैं कि यह उदाहरण, दोनों ही शब्द हैं, जो कि असंख्य और चलने योग्य हैं, जिसका अर्थ है कि यह उदाहरण किसी भी लूप में जाने / पास / पास होने की अनुमति देता है traverse / iterate सभी वस्तुओं और तत्वों के माध्यम से / जिसमें यह उदाहरण है।
इसका मतलब यह है कि यह उन सभी वस्तुओं और तत्वों की गणना करना भी संभव है जो इस उदाहरण में हैं।
प्रत्येक वर्ग जो System.Collection.IEnumerable इंटरफ़ेस को लागू करता है, वह GetEnumerator विधि को लागू करता है जो कोई तर्क नहीं लेता है और एक System.Collections.IEnumerator उदाहरण देता है।
System.Collections.IEnumerator इंटरफ़ेस का उदाहरण C ++ पुनरावृत्तियों के समान है।
जब कुछ उदाहरणों का वर्ग System.Collection.ICollection इंटरफ़ेस को सरल शब्दों में लागू करता है, तो हम कह सकते हैं कि यह उदाहरण कुछ चीजों का संग्रह है।
इस इंटरफ़ेस का सामान्य संस्करण, अर्थात् System.Collection.Generic.ICollection, अधिक जानकारीपूर्ण है क्योंकि यह सामान्य इंटरफ़ेस स्पष्ट रूप से बताता है कि संग्रह में किस प्रकार की चीज़ें हैं।
यह सब उचित, तर्कसंगत, तार्किक है और समझ में आता है कि System.Collections.ICollection Interface को System.Collections.IEnumerable इंटरफ़ेस से विरासत में मिला है, क्योंकि सैद्धांतिक रूप से हर संग्रह भी असंख्य और चलने योग्य दोनों है और यह सैद्धांतिक रूप से सभी वस्तुओं और तत्वों पर जाने के लिए संभव है। हर संग्रह में।
System.Collections.ICollection इंटरफ़ेस एक परिमित गतिशील संग्रह का प्रतिनिधित्व करता है जो परिवर्तनशील होते हैं, जिसका अर्थ है कि मौजूद आइटम को संग्रह से हटाया जा सकता है और नए आइटम को उसी संग्रह में जोड़ा जा सकता है।
यह बताता है कि क्यों System.Collections.ICollection इंटरफ़ेस में "जोड़ें" और "निकालें" विधियाँ हैं।
क्योंकि System.Collections.ICollection इंटरफ़ेस के उदाहरणों में परिमित संग्रह हैं तो "परिमित" शब्द का अर्थ है कि इस इंटरफ़ेस के प्रत्येक संग्रह में हमेशा एक सीमित संख्या में आइटम और तत्व होते हैं।
System.Collections.ICollection इंटरफ़ेस की संपत्ति गणना इस संख्या को वापस करने के लिए मानती है।
System.Collections.IEnumerable इंटरफ़ेस में ये विधियाँ और गुण नहीं हैं जो System.Collections.ICollection इंटरफ़ेस है, क्योंकि इसका कोई मतलब नहीं है कि System.Collections.IEnumerable में ये विधियाँ और गुण होंगे जो System.Collections.ICollection इंटरफ़ेस के पास है।
लॉजिक यह भी कहता है कि हर उदाहरण जो कि दोनों के लिए पर्याप्त और चलने योग्य है, जरूरी नहीं कि एक संग्रह है और जरूरी नहीं कि परिवर्तनशील हो।
जब मैं परिवर्तनशील कहता हूं, तो मेरा मतलब है कि तुरंत यह मत सोचिए कि आप किसी ऐसी चीज से कुछ जोड़ या हटा सकते हैं, जो कि असंख्य और चलने योग्य हो।
अगर मैंने सिर्फ प्राइम नंबरों का कुछ परिमित अनुक्रम बनाया है, उदाहरण के लिए, प्राइम नंबरों का यह परिमित अनुक्रम वास्तव में System.Collections.IEnumerable इंटरफ़ेस का एक उदाहरण है, क्योंकि अब मैं एक ही लूप में इस परिमित अनुक्रम में सभी प्रमुख संख्याओं पर जा सकता हूं और मैं उनमें से प्रत्येक के साथ जो करना चाहता हूं, जैसे कि उनमें से प्रत्येक को कंसोल विंडो या स्क्रीन पर प्रिंट करना है, लेकिन प्राइम नंबर का यह परिमित क्रम System.Collections.ICollection इंटरफ़ेस का उदाहरण नहीं है, क्योंकि इससे कोई मतलब नहीं है अभाज्य संख्याओं के इस परिमित अनुक्रम में संयुक्त संख्याएँ जोड़ें।
इसके अलावा, आप अगले पुनरावृत्ति में वर्तमान प्राइम नंबर के लिए निकटतम निकटतम बड़ा प्राइम नंबर प्राप्त करना चाहते हैं, यदि आप भी प्राइम नंबरों के इस परिमित अनुक्रम से मौजूद प्राइम नंबरों को हटाना नहीं चाहते हैं।
इसके अलावा, आप सिस्टम के GetEnumerator विधि में "यील्ड रिटर्न" का उपयोग, कोड और लिखना चाहते हैं। प्राइम नंबर का उत्पादन करने और मेमोरी हीप पर कुछ भी आवंटित न करने और फिर दोनों के लिए गारबेज कलेक्टर (GC) को आवंटित करने के लिए। निपटाएं और इस मेमोरी को ढेर से मुक्त करें, क्योंकि यह स्पष्ट रूप से ऑपरेटिंग सिस्टम मेमोरी की बर्बादी है और प्रदर्शन को कम करता है।
सिस्टम पर विधियों और गुणों का आह्वान करते समय हीप पर डायनेमिक मेमोरी आबंटन और डिक्लोकेशन किया जाना चाहिए। सिस्टम का चयन। लेकिन सिस्टम के तरीकों और गुणों को लागू करते समय नहीं ।Collections.IEnumerer Interface (हालांकि System.Collections.IEnumerable इंटरफ़ेस केवल है। 1 विधि और 0 गुण)।
इस स्टैक ओवरफ्लो वेबपेज में दूसरों ने जो कहा है, उसके अनुसार, System.Collections.IList इंटरफ़ेस केवल एक ऑर्डर करने योग्य संग्रह का प्रतिनिधित्व करता है और यह बताता है कि System.Collections.IList इंटरफ़ेस के तरीके System.Collections.ICollection इंटरफ़ेस के विपरीत इंडेक्स के साथ काम क्यों करते हैं।
संक्षेप में System.Collections.ICollection इंटरफ़ेस का यह अर्थ नहीं है कि इसका एक उदाहरण क्रमबद्ध है, लेकिन System.Collections.IList इंटरफ़ेस इसका अर्थ है।
सैद्धांतिक रूप से आदेश दिया सेट अनियंत्रित सेट का विशेष मामला है।
यह भी समझ में आता है और बताता है कि क्यों System.Collections.IList इंटरफ़ेस इनहेरिट करता है System.Collections.ICollection इंटरफ़ेस।
List
बहुत बेहतर होना चाहिए, हाँ?