2008-12-13 9 views
35

बनाम क्या VB.NET में ArrayList और सूची के बीच का अंतर इतना है कि विशिष्ट प्रकार के केवल वस्तुओं इसे में रखा जा सकता हैनेट: ArrayList सूची

+0

लिंक: [ 'ArrayList'] (http://msdn.microsoft.com/en-us/library/system.collections.arraylist.aspx), ['सूची'] (http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx) –

उत्तर

47

ऐरेलिस्ट को अनिवार्य रूप से बहिष्कृत कर दिया गया है क्योंकि वे अनियमित हैं - आपको उनके साथ कास्ट करने की आवश्यकता है - और वे मूल्य प्रकारों के लिए धीमे और कम स्थान कुशल हैं क्योंकि उन्हें वस्तुओं को बॉक्स करने की आवश्यकता होती है।

सामान्य सूची .NET 2.0 के साथ पेश की गई थी और जाने का तरीका है। अक्सर एक सूची एक सरणी से बेहतर है, कुछ डाउनसाइड्स के साथ।

चूंकि ये संग्रह नेट बेस क्लास लाइब्रेरी का हिस्सा हैं, यह सलाह सी # और जेनरिक्स का समर्थन करने वाली किसी भी नेट भाषा पर भी लागू होती है - यह वीबी.नेट के लिए विशिष्ट नहीं है।

+0

इसके अलावा, स्मृति उपयोग के संदर्भ में सूची अधिक कुशल है। Http://blogs.msdn.com/b/joshwil/archive/2004/04/13/112598.aspx – PapillonUK

2

सूची जेनरिक का उपयोग कर सकते है, इसलिए है कि आप अतिरिक्त हो सकता है टाइपिंग जांचें और ताकि आप मुक्केबाजी और अनबॉक्सिंग के कारण प्रोसेसिंग समय पर कटौती कर सकें। Arraylist इसका उपयोग नहीं कर सकता है। लगभग सभी मामलों में, आप एक Arraylist के बजाय एक सूची का उपयोग करना चाहेंगे।

+0

जेनिक्स को .NE 2.0 के साथ पेश किया गया था लेकिन ये कक्षाएं इससे पहले भी मौजूद थीं। इन वर्गों को आंतरिक रूप से लिखे जाने के तरीके में कोई अंतर है। – MOZILLA

+0

जब तक कि कोई अन्य सूची वर्ग नहीं है जिसे मैं अनजान हूं, तो यह गलत है। सूची का पूरा नामस्थान सिस्टम है। चयन। जेनेरिक.लिस्ट, जिसका अर्थ है कि यह जेनरिक के साथ उपयोग के लिए विशेष रूप से जोड़ा गया था। – Kibbee

14

सूची ArrayList का एक सामान्य कार्यान्वयन है। ArrayList सभी ऑब्जेक्ट्स को सिस्टम के रूप में स्टोर करता है। ऑब्जेक्ट जिसे आपको आवश्यक प्रकार पर डाला जाता है। ArrayLists heterogenous हैं, सूची केवल एक प्रकार की वस्तुओं को स्टोर कर सकते हैं - उस प्रकार के सामान्य पैरामीटर के रूप में आपूर्ति की जाती है।

List<string> strList; // can store only strings 
List<int> intList; // can store only ints 
ArrayList someList; // can store anything 
+4

बेशक, आप तकनीकी रूप से हमेशा एक सूची बना सकते हैं जो "ऑब्जेक्ट" संग्रहीत करता है और इसमें कुछ भी स्टोर करता है, क्योंकि सब कुछ स्वाभाविक रूप से वस्तु से विरासत में मिलता है। – Kibbee

+28

और हर कोई आपको इंगित करेगा और हंस जाएगा – Will

3

ArrayList आप इस लिखने के लिए अनुमति देता है:

Dim customers as new ArrayList 
Dim c as new Customer 
Dim m as new Manager 
customers.Add(c) 
customers.Add(m) 

'This will cause an exception ' 
For each c as Customer in customers 
console.writeline(c.Name) 
Next 

एक (ग्राहक की) सूची ग्राहक प्रकार और प्रकार है कि ग्राहक से विरासत का ही वस्तु की अनुमति देता है, तो आप इस तरह के गलती नहीं कर सकते हैं।

भले ही आपको एक ही संग्रह में असंबंधित प्रकार की वस्तुओं को रखने की आवश्यकता हो, फिर भी एक सूची (ऑब्जेक्ट) एक बेहतर विकल्प है क्योंकि यह स्पष्ट करता है कि आप विभिन्न प्रकार से निपट रहे हैं।

5

32 बिट मशीनों और मुक्केबाजी पर 32 बिट संदर्भों के विपरीत 64 बिट चौड़े मेमोरी संदर्भों के कारण 64 बिट पर प्रयुक्त तत्वों को स्टोर करने के लिए 64 बिट पर उपयोग किए जाने पर ArrayLists और भी अधिक अक्षम हैं।

अधिक जानकारी के लिए देखें: डॉक्स http://blogs.msdn.com/joshwil/archive/2004/04/13/112598.aspx

संबंधित मुद्दे