.NET 2.0+ पर जाने के बाद भी सिस्टम का उपयोग करने का कोई कारण है। चयन नामस्थान (विरासत कोड बनाए रखने के अलावा)? क्या जेनेरिक नेमस्पेस हमेशा इसके बजाय इस्तेमाल किया जाना चाहिए?जेनिक्स और सिस्टम। चयन
उत्तर
अधिकांश भाग के लिए, सामान्य संग्रह गैर-जेनेरिक समकक्ष से तेज़ी से प्रदर्शन करेंगे और आपको दृढ़ता से टाइप किए गए संग्रह का लाभ प्रदान करेंगे। संग्रह System.Collections और System.Collections.Generic में उपलब्ध की तुलना करना, आप निम्न "प्रवास" मिलती है:
Non-Generic Generic Equivalent ------------------------------------------------------------ ArrayList List<T> BitArray N/A CaseInsensitiveComparer N/A CollectionBase Collection<T> Comparer Comparer<T> DictionaryBase Dictionary<TKey,TValue> Hashtable Dictionary<TKey,TValue> Queue Queue<T> ReadOnlyCollectionBase ReadOnlyCollection<T> SortedList SortedList<TKey,TValue> Stack Stack<T> DictionaryEntry KeyValuePair<TKey,TValue> ICollection N/A (use IEnumerable<T> or anything that extends it) IComparer IComparer<T> IDictionary IDictionary<TKey,TValue> IEnumerable IEnumerable<T> IEnumerator IEnumerator<T> IEqualityComparer IEqualityComparer<T> IList IList<T>
ICollection (कोई सदस्य संग्रह की सामग्री को बदलने के लिए) ICollection < टी > है, जबकि अपरिवर्तनीय है परिवर्तनशील। इससे इंटरफेस केवल नाम में समान होते हैं जबकि आईसीओलेक्शन और आईनेमेरेबल < टी > बहुत कम से भिन्न होते हैं।
इस सूची से, एकमात्र गैर-जेनेरिक वर्ग जिनके पास सामान्य समकक्ष नहीं है, वे बिटएरे और केसइन्सेंसिव कॉम्पैयर हैं।
कुछ परिस्थितियों में जेनेरिक कंटेनर पुराने लोगों की तुलना में बेहतर प्रदर्शन करते हैं। उन्हें कम से कम पुराने परिस्थितियों में सभी परिस्थितियों में प्रदर्शन करना चाहिए। और वे प्रोग्रामिंग त्रुटियों को पकड़ने में मदद करते हैं। यह एक अधिक सहायक अमूर्तता और बेहतर प्रदर्शन का एक दुर्लभ संयोजन है, इसलिए उनसे बचने के लिए कोई कारण नहीं है। केवल अगर आपको एक क्रमी लाइब्रेरी द्वारा मजबूर होना पड़ता है तो आपको जेनेरिक से पहले लिखा गया था।
मैंने सी # टीम से एंडर्स हेजल्सबर्ग के साथ एक साक्षात्कार देखा और उनसे पूछा गया कि क्या वह कुछ भी था जो उसने .NET की पिछली रिलीज के साथ खेद व्यक्त किया था। एएसपीनेट 1.0 में जेनेरिक नहीं होने वाली पहली बात थी। इसका मतलब यह नहीं था कि उन्हें कामकाज को लागू करना था जो नेट पुस्तकालयों के साथ रहेंगे और जल्द ही विरासत कोड बन जाएंगे।
मैं सिस्टम का कभी भी उपयोग नहीं करता हूं। चयन नामस्थान और उसके कथन से यह सही पथ प्रतीत होता है।
केवल बुरी बात मैं जब जेनेरिक्स का उपयोग कर के बारे में सोच सकते हैं के बारे में भिन्नता है, उदाहरण के लिए इसलिए, यदि आप एक List<Person>
है और आप एक विधि है कि List<object>
आप क्योंकि List<Person>
पर कास्ट नहीं कर सकते हैं नहीं किया जा सकता है लेता है करने के लिए इसे पास करना चाहते हैं List<object>
सीधे।
यह समस्या .NET 4.0 में हल हो गई है।
- 1. सिस्टम। चयन वीएस सिस्टम। चयन। ऑब्जेक्ट मॉडल
- 2. जेनिक्स और प्रश्न चिह्न
- 3. जेनिक्स और java.beans.Introspector
- 4. सी # जेनिक्स और विनफॉर्म
- 5. जेनिक्स और नालीबल प्रकार
- 6. जेनिक्स और कार्यान्वयन IComparable
- 7. सी # जेनिक्स और टाइपिंग
- 8. जेनिक्स और क्लास .forName
- 9. जेनिक्स
- 10. जेनिक्स
- 11. सी # में जेनिक्स और टी
- 12. जावा में जेनिक्स और सॉर्टिंग
- 13. सिस्टम। चयन। Generic.Dictionary = अंतिम प्रदर्शन?
- 14. जेनिक्स और डेटाबेस - एक डिजाइन समस्या
- 15. सी # जेनिक्स?
- 16. क्लास जेनिक्स
- 17. सी # जेनिक्स
- 18. जेनिक्स स्टैकिंग
- 19. जेनिक्स - ओपन और बंद निर्मित प्रकार
- 20. सिस्टम। स्पीच। पहचान पहचान प्रोफाइल का चयन
- 21. थ्रेड में सिस्टम कॉल का चयन करें?
- 22. क्वेरी का चयन करें पर सिस्टम कॉल
- 23. जेनिक्स बनाम इंटरफेस
- 24. जेनिक्स बनाम ऑब्जेक्ट प्रदर्शन
- 25. जावा में जेनिक्स
- 26. सी # जेनिक्स इंस्टेंटेशन
- 27. जेनिक्स या जेनरिक नहीं
- 28. टाइपस्क्रिप्ट में जेनिक्स
- 29. जेनिक्स/जेएसओएन जावास्क्रिप्टसेरियलाइज़र सी #
- 30. गुइस के साथ जेनिक्स इंजेक्शन
KeyedCollection आपके द्वारा संग्रहीत डेटा के आधार पर, शब्दकोशबेस के लिए एक उपयुक्त विकल्प है। –