कई स्ट्रिंग मानों के साथ स्ट्रिंग्स (सूची <string>) की सूची को कैसे प्रारंभ करें


358

कैसे शुरू करना संभव है (सी # इनिशियलाइज़र के साथ) तार की सूची? मैंने नीचे दिए गए उदाहरण के साथ कोशिश की है लेकिन यह काम नहीं कर रहा है।

List<string> optionList = new List<string>
{
    "AdditionalCardPersonAddressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
}();

इस सवाल के जवाब में एक बहुआयामी सूची के लिए यहाँ एक उदाहरण है stackoverflow.com/questions/34473358/…
barlop

जवाबों:


464
List<string> mylist = new List<string>(new string[] { "element1", "element2", "element3" });

149
मुझे नहीं लगता कि इस ऑब्जेक्ट को बनाने के लिए एक स्ट्रिंग सरणी को इनिशियलाइज़ करने का एक अच्छा कारण है। जो कोई भी देख रहा है, कृपया अन्य उत्तरों में से एक का उपयोग करें।
रॉबर्ट स्मिथ

2
@Unsliced ​​और @Padel के पास सही उत्तर हैं imo। newयदि आप साथ शुरू करते हैं, तो किसी और चीज में पास होने की आवश्यकता नहीं है{ }
डॉन चेडल

C ++ CLI के लिए यह इस प्रकार है:Collections::Generic::List<int>^ mylist = gcnew Collections::Generic::List<int>(gcnew array<int>{0, 1, 2, 3, 4})
रोस्तफ्रेई

@ याकूब क्यों? क्योंकि आवंटित करना new String[]कुशल नहीं है?
डायलन Czenski

8
@DylanChensky मैं एक सामान्य नियम के रूप में कहूंगा, अनावश्यक कुछ भी करना अक्षम्य है। दी, यह एक उदाहरण बड़ी बात नहीं हो सकती है, लेकिन कल्पना करें कि क्या आपका कोड इस तरह की वस्तुओं से अटे पड़ा है। यह समग्र रूप से एक बड़ा अंतर बना सकता है, खासकर जब यह मेमोरी उपयोग के लिए आता है।
रॉबर्ट स्मिथ

556

बस ()अंत में हटा दें ।

List<string> optionList = new List<string>
            { "AdditionalCardPersonAdressType", /* rest of elements */ };

4
@Oded: msdn.microsoft.com/en-us/library/bb384062.aspx "संग्रह initializers"
Lucero

क्या आप .NET / C # के एक विशिष्ट संस्करण की बात कर रहे हैं? जहाँ तक मुझे यह काम v3.5 से पता है और बाद में। 2.0 के बारे में पता नहीं है क्योंकि मैंने इसे कुछ समय के लिए इस्तेमाल नहीं किया है ...
Padel

1
asp.net 2.0 btw मैं त्रुटि के बाद {-> त्रुटि 7 एक नई अभिव्यक्ति की आवश्यकता है () या [] प्रकार के बाद
बिलिन Kılıç

4
2.0 में आपको इसे इस तरह उपयोग करना होगा List<string> optionList = new List<string>() { "AdditionalCardPersonAdressType", /* rest of elements */ };:। नोट ()यहाँ: new List<string>()
पैडल

3
यह C # 3 भाषा की सुविधा है और आपके द्वारा उपयोग किए जा रहे ढांचे के संस्करण के साथ इसका कोई लेना-देना नहीं है। यदि आप अभी भी Visual Studio 2005 का उपयोग कर रहे हैं, तो आप इस सुविधा का उपयोग करने में सक्षम नहीं होंगे।
फिल गण

145

आपने वास्तव में एक प्रश्न नहीं पूछा है, लेकिन कोड होना चाहिए

List<string> optionList = new List<string> { "string1", "string2", ..., "stringN"}; 

सूची के बाद कोई अनुगामी () नहीं।


त्रुटि 7 एक नई अभिव्यक्ति की आवश्यकता होती है () या [] टाइप करने के बाद
बिलिन Kılıç

2
@blgnklc, क्योंकि आप C # 2 का उपयोग कर रहे हैं जो इस सुविधा का समर्थन नहीं करता है।
फिल गण

25
var animals = new List<string> { "bird", "dog" };
List<string> animals= new List<string> { "bird", "dog" };

ऊपर दो सबसे छोटे तरीके हैं, कृपया https://www.dotnetperls.com/list देखें


1
क्या यह स्वीकार किए जाते हैं जवाब पर पसंद किया जाता है? यह सरल लगता है, एक मध्यवर्ती की आवश्यकता नहीं हैstring[]
एहतेश चौधरी

var animals = new List<string> { "bird", "dog" };स्वीकृत उत्तर में सुझाव नहीं दिया गया था। इसके (new string[]अलावा स्वीकृत उत्तर में एक अतिरिक्त कमांड है जिसे टाला जा सकता है।
सुजॉय

14

आपका कार्य ठीक है, लेकिन काम नहीं कर रहा है क्योंकि आपने ()आखिरी के बाद रखा है }। अगर आप हिलते हैं()new List<string>() त्रुटि रुकने के ठीक बाद शीर्ष पर जाते हैं ।

नीचे नमूना:

List<string> optionList = new List<string>()
{
    "AdditionalCardPersonAdressType","AutomaticRaiseCreditLimit","CardDeliveryTimeWeekDay"
};

7

यह है कि आप कैसे शुरू करते हैं और यह भी कि आप इसे और अधिक गतिशील बनाना चाहते हैं, तो आप List.Add () का उपयोग कर सकते हैं।

List<string> optionList = new List<string> {"AdditionalCardPersonAdressType"};
optionList.Add("AutomaticRaiseCreditLimit");
optionList.Add("CardDeliveryTimeWeekDay");

इस तरह, यदि आप IO से मान ले रहे हैं, तो आप इसे गतिशील रूप से आवंटित सूची में जोड़ सकते हैं।



0

एक बहुत अच्छी सुविधा यह है कि सूची आरंभीकरण कस्टम कक्षाओं के साथ भी ठीक काम करता है: आपको बस IEnumerable इंटरफ़ेस को लागू करना है और Add नामक एक विधि है

उदाहरण के लिए यदि आपके पास इस तरह एक कस्टम वर्ग है:

class MyCustomCollection : System.Collections.IEnumerable
{
    List<string> _items = new List<string>();

    public void Add(string item)
    {
        _items.Add(item);
    }

    public IEnumerator GetEnumerator()
    {
        return _items.GetEnumerator();
    }
}

यह काम करेगा:

var myTestCollection = new MyCustomCollection()
{
    "item1",
    "item2"
}

-1
List<string> animals= new List<string>();
animals.Add("dog");
animals.Add("tiger");

3
कृपया अपने उत्तर में कुछ स्पष्टीकरण जोड़ें
mechnicov

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.