जब मेरे पास चीजों की सूचियों के साथ मेरे डोमेन में इकाइयां हैं, तो क्या उन्हें ILists या IENumerables के रूप में उजागर किया जाना चाहिए? जैसे आदेश ऑर्डरलाइन का एक गुच्छा है।संस्थाओं पर संग्रह के लिए ILI बनाम IENumerable
उत्तर
IEnumerable<T>
उन वस्तुओं की एक श्रृंखला का प्रतिनिधित्व करता है जिन्हें आप पुन: सक्रिय कर सकते हैं (उदाहरण के लिए foreach का उपयोग करके), जबकि IList<T>
एक संग्रह है जिसे आप जोड़ या निकाल सकते हैं।
आमतौर पर आप ऑर्डरलाइन को जोड़कर या निकालकर ऑर्डर को संशोधित करने में सक्षम होना चाहते हैं, तो शायद आप ऑर्डर चाहते हैं। लाइन IList<OrderLine>
हो।
ऐसा कहकर, कुछ फ्रेमवर्क डिजाइन निर्णय लेना चाहिए जो आपको करना चाहिए। उदाहरण के लिए, क्या ऑर्डरलाइन के दो अलग-अलग ऑर्डर में एक ही उदाहरण जोड़ना संभव हो सकता है? शायद ऩही। इसलिए दिया गया है कि आप ऑर्डरलाइन को ऑर्डर में जोड़ना चाहिए या नहीं, आप वास्तव में लाइन्स प्रॉपर्टी को केवल IEnumerable<OrderLine>
के रूप में सतह पर रखना चाहते हैं, और एड (ऑर्डरलाइन) और निकालें (ऑर्डरलाइन) विधियां प्रदान कर सकते हैं जो कर सकते हैं उस सत्यापन को संभाल लें।
अधिकांश समय मैं आईनेस्ट के साथ आईएनयूमेरेबल पर जा रहा हूं क्योंकि आईनेमेरेबल में गिनती विधि नहीं है और आप एक इंडेक्स के माध्यम से संग्रह तक नहीं पहुंच सकते हैं (हालांकि यदि आप LINQ का उपयोग कर रहे हैं तो आप विस्तार के साथ इसे प्राप्त कर सकते हैं विधि)।
मेरा मानना है कि आप हमेशा IEnumerable के साथ एक IList कार्यान्वयन का दृष्टांत कर सकते हैं गणना विधि और उदाहरण के लिए की तरह उपयोग करने के लिए की जरूरत है: IEnumerable
IEnumerable
"आप एक अनुक्रमणिका के माध्यम से संग्रह तक नहीं पहुंच सकते" - 'ElementAt' विधि के बारे में क्या? – ivamax9
क्या दोनों को लागू करना बुद्धिमान होगा? – PedroC88
यह नहीं होगा। आईएलयूमेरेबल से एक आईएलिस्ट विरासत में आता है। – Unknown1987