2009-03-21 12 views
28

गैर-पूर्वनिर्धारित ऊपरी सीमा के साथ कुछ सरणी में रखे तारों के लिए सबसे उपयुक्त कंटेनर क्या है, जो इसकी रचना पर लंबाई अज्ञात है।सर्वश्रेष्ठ स्ट्रिंग कंटेनर: स्ट्रिंगकोलेक्शन, संग्रह <string>, सूची <string>, ऐरेलिस्ट, ..?

की तरह सरल कोड के लिए:

var list = new SomeContainer(); // size is unknown 
for()/foreach()/do()/while() // any loop 
{ 
    list.Add(string); 
} 

यह StringCollection स्ट्रिंग के लिए अनुकूलित संग्रह, या बस Collection<string> या List<string> या ArrayList के रूप में है? उनके बीच क्या अंतर है?

+0

प्रदर्शन से संबंधित संबंधित प्रश्न विशेष रूप से: https://stackoverflow.com/questions/7774374/performance-concern-stringcollection-vs-liststring –

उत्तर

34

आपको जो चाहिए, उसके लिए List<string> शायद सबसे बहुमुखी है। StringCollection 1.1 में आसान था, जब (जेनरिक के बिना) आपको टाइप किए गए संग्रह के लिए विशिष्ट कक्षाओं की आवश्यकता होती थी। Collection<string> से उपयोगी है अगर आप उपवर्ग करने के लिए इसे मान्यता प्रदान करना चाहते हैं आदि

किसी भी तरह से, 3.5 में, LINQ उनके लिए अतिरिक्त तरीकों के बहुत सारे प्रदान करेगा - लेकिन LINQ के बिना, List<T> और अधिक सुविधाओं (Find, Sort, आदि)

है
14

List<T> सबसे कुशल होगा।

Collection<T> कक्षा किसी अन्य प्रकार की सूची के लिए सिर्फ एक रैपर है, पैरामीटर रहित कन्स्ट्रक्टर Collection<T>List<T> के साथ शुरू करता है।

एक ArrayList अनिवार्य रूप से List<object> जैसा ही है, इसलिए इसे पढ़ने से आपको String पर आइटम डालना होगा।

StringCollectionArrayList के लिए सिर्फ एक प्रकार का सुरक्षित रैपर है।

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