2013-07-03 5 views
34

के बीच व्यावहारिक अंतर समान पदों को पढ़कर मैंने सीखा है कि एक सूची आईनेमरेबल का एक प्रकार है। लेकिन मैं वास्तव में सोच रहा हूं कि वास्तव में उन दोनों के बीच व्यावहारिक अंतर क्या है।सूची और IENumerable

  • दोनों के बीच व्यावहारिक अंतर क्या है:

    कोई है जो हमेशा एक सूची का इस्तेमाल किया और कभी नहीं IEnumerable का इस्तेमाल किया है करने के लिए

    ?

  • उनमें से कौन सा परिदृश्य दूसरे से बेहतर है?

यहाँ एक व्यावहारिक उदाहरण है: हम चार तार स्टोर करने के लिए उन्हें वर्णानुक्रम आदेश, उन्हें एक समारोह को पारित और उसके बाद उपयोगकर्ता परिणाम दिखाने चाहते हैं। हम क्या उपयोग करेंगे और क्यों?

उम्मीद है कि कोई मेरे लिए इसे हल कर सकता है या मुझे सही दिशा में इंगित कर सकता है। अग्रिम धन्यवाद!

+2

ए 'सूची'' आईनेमरेबल 'का एक प्रकार नहीं है, यह उस अनुबंध को पूरा करता है जो' आईनेमरेबल 'सेट करता है (यानी इसे' आईनेमेरेबल 'के रूप में उपयोग किया जा सकता है)। यदि आप तारों को स्टोर करना चाहते हैं तो आप एक सूची का उपयोग करेंगे। आप एक गणित का उपयोग नहीं कर सकते क्योंकि यह कक्षा नहीं है। यदि आप चाहें तो सूची को एक गणना के रूप में एक्सेस कर सकते हैं। –

+6

इसे डुप्लिकेट प्रश्न के रूप में चिह्नित नहीं किया जाना चाहिए। LINQ का उपयोग करते समय दूसरा सवाल आईनंबरबल बनाम सूची के बारे में बात करता है। यह सवाल LINQ के बारे में नहीं है। – JMS10

उत्तर

114

आईन्यूमेरेबल और लिस्ट (एक इंटरफ़ेस होने के अलावा और दूसरा एक ठोस वर्ग होने के बीच) के बीच एक महत्वपूर्ण अंतर यह है कि IENumerable केवल पढ़ने के लिए है और सूची नहीं है।

इसलिए यदि आपको अपने संग्रह में किसी भी तरह के स्थायी परिवर्तन करने की क्षमता की आवश्यकता है (हटाएं), तो आपको सूची की आवश्यकता होगी। यदि आपको बस अपने संग्रह को पढ़ने, क्रमबद्ध करने और/या फ़िल्टर करने की आवश्यकता है, तो उस उद्देश्य के लिए IENumerable पर्याप्त है।

तो अपने व्यावहारिक उदाहरण में, यदि आप एक समय में चार तारों को जोड़ना चाहते हैं, तो आपको सूची की आवश्यकता होगी। लेकिन अगर आप एक बार में अपने संग्रह को तुरंत चालू कर रहे थे, तो आप IENumerable का उपयोग कर सकते हैं।

IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"}; 

तब आप सूची को फ़िल्टर या सॉर्ट करने के लिए LINQ का उपयोग कर सकते थे, हालांकि आप चाहते थे।

+22

"IENumerable केवल पढ़ने के लिए है और सूची नहीं है।" अंत में एक ठोस जवाब जो वास्तव में आपको अंतर का एक सामान्य विचार देता है। बहुत बहुत धन्यवाद :) – Robin

+1

बिल्कुल सही !! अच्छा और सरल उत्तर –

+1

कुछ अन्य अच्छी चीजें हैं जो आप IENumerable के साथ कर सकते हैं कि आप किसी सूची के साथ नहीं कर सकते हैं। उपज कीवर्ड देखें। https://www.kenneth-truyers.net/2016/05/12/yield-return-in-c/ – Kevin

10

सूची के अलावा कई प्रकार IENumerable जैसे ArrayList को लागू करते हैं। तो एक फायदा यह है कि आप एक ही समारोह में विभिन्न संग्रह प्रकारों को पारित कर सकते हैं।

संबंधित मुद्दे