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