मुझे लगता है कि आप या तो उपयोग कर सकते हैं, लेकिन प्रत्येक का उपयोग है। मूल रूप से List
हैIEnumerable
लेकिन आपके पास गणना की कार्यक्षमता है, तत्व जोड़ें, तत्व निकालें
तत्वों की गणना के लिए IEnumerable कुशल नहीं है
यदि संग्रह को पढ़ने के लिए अभिप्रेत है, या संग्रह का संशोधन Parent
तब के लिए नियंत्रित किया जाता है, तो IList
बस वापस करने के लिएCount
एक अच्छा विचार नहीं है।
लाइनक में, एक Count()
विस्तार विधि है IEnumerable<T>
जिस पर सीएलआर के अंदर .Count
अंतर्निहित प्रकार के होने पर शॉर्टकट होगाIList
, इसलिए प्रदर्शन अंतर नगण्य है।
आम तौर पर मुझे लगता है (राय) यह संभव है कि IEnumerable को वापस करने के लिए बेहतर अभ्यास जहां संभव हो, अगर आपको अतिरिक्त करने की आवश्यकता है, तो इन विधियों को मूल वर्ग में जोड़ें, अन्यथा उपभोक्ता तब मॉडल के भीतर संग्रह का प्रबंधन कर रहा है जो सिद्धांतों का उल्लंघन करता है, जैसे कि manufacturer.Models.Add(model)
कानून का उल्लंघन Demeter। बेशक ये केवल दिशा-निर्देश हैं और कठिन और तेज़ नियम नहीं हैं, लेकिन जब तक आपके पास प्रयोज्यता का पूरा आभास नहीं होता है, तब तक आँख बंद करके पालन करना बेहतर है।
public interface IManufacturer
{
IEnumerable<Model> Models {get;}
void AddModel(Model model);
}
(नोट: यदि nNHibernate का उपयोग करते हुए आपको अलग-अलग एक्सेसरों का उपयोग करके निजी IList के लिए मैप करना पड़ सकता है।)