562 Stimmen

Wie initialisiert man eine Liste von Strings (List<string>) mit vielen Stringwerten?

Wie ist es möglich, (mit einem C#-Initialisierer) eine Liste von Zeichenfolgen zu initialisieren? Ich habe versucht, mit dem Beispiel unten, aber es funktioniert nicht.

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

15voto

Cyber Progs Punkte 3260

Wenn Sie C# 9.0 und höher verwenden, können Sie die neue Funktion nutzen target-typed new expressions Link

Ejemplo:

List<string> stringList = new(){"item1","item2", "item3"} ;

9voto

Die richtige Art der Initialisierung zusammen mit der Deklaration ist :

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

6voto

Enye Aaron Shi Punkte 313

Auf diese Weise initialisieren Sie und können auch List.Add() verwenden, wenn Sie es dynamischer machen wollen.

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

Auf diese Weise können Sie, wenn Sie Werte von IO übernehmen, diese einer dynamisch zugewiesenen Liste hinzufügen.

4voto

adospace Punkte 1551

Ein wirklich cooles Feature ist, dass der Listeninitialisierer auch mit benutzerdefinierten Klassen funktioniert: Sie müssen nur die IEnumerable Schnittstelle und haben eine Methode namens hinzufügen .

Wenn Sie also zum Beispiel eine benutzerdefinierte Klasse wie diese haben:

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();
    }
}

das wird funktionieren:

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

3voto

Andrew Kozlov Punkte 56

Verschieben Sie runde Klammern wie folgt:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X