प्रसंग:क्या .NET डिज़ाइन दिशानिर्देश INumerable <T> पर सूची <T> लौटने का सुझाव देते हैं?
: मैं एक ईमेल अपने सहयोगियों के लिए उन्हें यह बतानेEnumerable.Empty<T>()
के बारे मेंreturn new List<T>();
की तरह कुछ कर रही बिना मैं एक उत्तर कह नकारात्मक पक्ष यह है कि यह एक विशेष प्रकार का खुलासा नहीं करता है कि मिल गया खाली संग्रह वापस जाने के लिए एक तरह से के रूप में भेजायह एक छोटा मुद्दा प्रस्तुत करता है। अपने रिटर्न प्रकार * के बारे में जितना संभव हो उतना सटीक होना हमेशा अच्छा होता है (इसलिए यदि आप एक सूची <> वापस कर रहे हैं, तो इसे अपना रिटर्न टाइप करें); ऐसा इसलिए है क्योंकि सूचियों और Arrays जैसी चीजें अतिरिक्त विधियां हैं जो उपयोगी हैं। इसके अलावा कॉलिंग विधि से संग्रह का उपयोग करते समय प्रदर्शन विचारों को बनाने में भी उपयोगी हो सकता है।
दुर्भाग्य से नीचे की चाल आपको एक आईनेमरेबल लौटने के लिए मजबूर करती है, जो जितना संभव हो उतना गैर-विशिष्ट है, है ना? :(
* यह नेट डिजाइन दिशानिर्देश से वास्तव में है। दिशा निर्देशों में कहा कारणों ही के रूप में मैं यहाँ यह उल्लेख कर रहा हूँ, मेरा मानना है कि कर रहे हैं।
इस की पूरी विपरीत लग रहा था क्या मुझे पता चला था, और के रूप में मैं हो सकता है की कोशिश, मैं डिजाइन के दिशा निर्देशों में इस सटीक सलाह नहीं पा सके मैं इस तरह एक छोटा सा टुकड़ा मिला:।
बहुत से वापसी
Collection<T>
याReadOnlyConnection<T>
का एक उपवर्ग DO आमतौर पर प्रयुक्त विधियों और गुणों।
कोड स्निपेट के बाद, लेकिन कोई और औचित्य नहीं है।
तो ही कहा जा रहा है, यह एक वास्तविक और स्वीकार किए जाते हैं दिशानिर्देश (जिस तरह से यह पहला ब्लॉक कोट में वर्णित किया गया था) क्या है? या क्या इसका गलत व्याख्या किया गया है? अन्य सभी SO प्रश्न जो मुझे मिल सकते हैं, जवाब IEnumerable<T>
को रिटर्न प्रकार के रूप में पसंद करते हैं। हो सकता है कि मूल .NET दिशानिर्देश अभी पुराना हो?
या शायद यह इतना स्पष्ट कट नहीं है? क्या विचार करने के लिए कुछ ट्रेडऑफ हैं? एक और विशिष्ट प्रकार वापस करने के लिए एक अच्छा विचार कब होगा? क्या कभी किसी ठोस जेनेरिक प्रकार को वापस करने की सिफारिश की जाती है, या केवल IList<T>
और ReadOnlyCollection<T>
जैसे अधिक विशिष्ट इंटरफ़ेस को वापस करने के लिए?
मेरे पास इसका कोई संदर्भ नहीं है, लेकिन मैंने हमेशा यह पढ़ा है कि सबसे सामान्य प्रकार को संभवतः वापस करने के लिए सबसे अच्छा है। तो 'केवल पढ़ने के लिए' IENumerable 'संपादित करने के लिए, 'संपादन योग्य संग्रह के लिए' ICollection ' और 'IList ' यदि आपको अनुक्रमित संपादन योग्य संग्रह की आवश्यकता है। –
jrummell
मैं व्यक्तिगत रूप से हमेशा * कम से कम * विशिष्ट प्रकार को वापस करने की कोशिश करता हूं। मेरी विधियां जो कई आइटम्स को 'IENumerable' पर डिफ़ॉल्ट रूप से लौटाती हैं, जब तक कि अन्यथा करने के लिए बहुत अच्छा कारण न हो (और वहां बहुत ही कम है।) उन मामलों में जहां मैं यह स्पष्ट करना चाहता हूं कि संग्रह एक अनुक्रमणीय सूची है, मैं ' ReadOnlyCollection '। आम तौर पर, आमतौर पर उपभोक्ताओं को एक परिवर्तनीय सूची लौटने का कोई कारण नहीं होता है। .NET दिशानिर्देशों को यहां पुराना हो सकता है। –
dlev
क्या आपके पास उद्धृत .NET डिज़ाइन दिशानिर्देशों का लिंक है? मुझे अनुमान है कि कहीं यहां दफनाया गया है: http://msdn.microsoft.com/en-us/library/ms229042 – jrummell