2010-07-12 13 views
18

क्या कोई मुझे बता सकता है कि मुझे कब उपयोग करना चाहिए।मुझे एक आईनेमरेबल या IList का उपयोग करना चाहिए?

उदाहरण के लिए, मुझे लगता है कि मुझे एक आईएलआईस्ट का उपयोग करना चाहिए जब मैं एक्सेस करना चाहता हूं। संग्रह या व्यक्तिगत आइटम का सही, सही?

धन्यवाद।

उत्तर

37

आम तौर पर, बोल आप कोशिश करते हैं और कम से कम विशिष्ट प्रकार है कि अपने उद्देश्य सूट का उपयोग करना चाहिए। आईन्यूमेरेबल आईएलआईस्ट (आईएलआईएन लागू करता है INumerable) से कम विशिष्ट है, जब तक कि आप IList से कुछ विशिष्ट नहीं चाहते (जैसे कि जैसा कि आप सुझाव देते हैं, या शायद जोड़ें, हटाएं, आदि), मैं IENumerable का उपयोग करूंगा।

आईन्यूमेरेबल पर रहने से आपको मिलने वाले अच्छे जोड़ों पर यह है कि आप इस प्रकार को वापस करने के लिए इटेटरेटर विधियों को लिख सकते हैं (यदि आप उनसे परिचित नहीं हैं तो "उपज वापसी" और इटरेटर विधियों को देखें)। यह आपको अपने लूप के लिए बहुत मेमोरी कुशल "पाइपलाइन" लिखने की अनुमति देता है।

+2

मैं कम से कम व्युत्पन्न प्रकार का उपयोग करने के साथ सहमत हूं। ICollection <> अधिकांश जोड़/निकालने के लिए पर्याप्त है। –

+0

@ मार्क एच - अच्छा बिंदु - अधिकांश जोड़/निकालने के संचालन के लिए, यहां तक ​​कि IList अनावश्यक रूप से विशिष्ट है। –

+0

IList * लागू * IENumerable ?! –

12

जब आप किसी संग्रह में आइटम्स के माध्यम से लूप करना चाहते हैं तो आप IENumerable का उपयोग करते हैं।

IList तब होता है जब आप सूची सामग्री को क्रमबद्ध करना, निकालना और एक्सेस करना चाहते हैं।

IList vs IEnumerable for Collections on Entities

http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=722

3

आप IList का उपयोग करना चाहिए जब आप अपने संग्रह में सूचकांक द्वारा पहुंच की आवश्यकता है जोड़ सकते हैं और तत्वों को नष्ट, आदि, और IEnumerable जब आप बस अपने संग्रह से अधिक की गणना की जरूरत है।

एक बहुत ही सरल उत्तर, यदि आप परिदृश्य का वर्णन करेंगे तो मैं इसे बढ़ा सकता हूं।