Wie füge ich bei der Instanziierung Werte in das C # -Dictionary ein?


149

Weiß jemand, ob es eine Möglichkeit gibt, Werte in ein C # -Wörterbuch einzufügen, wenn ich es erstelle? Ich kann, will aber nicht dict.Add(int, "string")für jeden Gegenstand etwas tun , wenn es etwas Effizienteres gibt, wie:

Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")};

Antworten:


199

Hier gibt es eine ganze Seite darüber:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

Beispiel:

Im folgenden Codebeispiel wird a Dictionary<TKey, TValue>mit Instanzen vom Typ initialisiert StudentName:

var students = new Dictionary<int, StudentName>()
{
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}},
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}},
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}}
};

3
Dies funktioniert jedoch nur mit dem .NET 3.5-Compiler. Denken Sie daran.
— Adrian Godong

@ kd7iwp - kein Problem, ein Teil der Funktion dieser Site besteht darin, dass alternative Suchbegriffe an etwas Nützliches weitergeleitet werden können.
— Daniel Earwicker

Ja, das ist bei Microsoft so ziemlich selbstverständlich. Sie haben sich im Laufe der Jahre sehr für die Abwärtskompatibilität engagiert.
— PRMan

46
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
   { 0, "string" }, 
   { 1, "string2" }, 
   { 2, "string3" } };

12

Sie waren fast da:

var dict = new Dictionary<int, string>()
{ {0, "string"}, {1,"string2"},{2,"string3"}};

10

Sie können auch Lambda-Ausdrücke verwenden, um Schlüsselwertpaare aus einem anderen IEnumerable-Objekt einzufügen. Schlüssel und Wert können beliebig sein.

Dictionary<int, string> newDictionary = 
                 SomeList.ToDictionary(k => k.ID, v => v.Name);

Ich finde das viel einfacher, da Sie die IEnumerable-Objekte überall in .NET verwenden

Hoffentlich hilft das!!!

Bisschen.


7

Sie können ein Wörterbuch instanziieren und Elemente wie folgt hinzufügen:

var dictionary = new Dictionary<int, string>
    {
        {0, "string"},
        {1, "string2"},
        {2, "string3"}
    };

7

Damit Sie ab C # 6 wissen, können Sie es jetzt wie folgt initialisieren

var students = new Dictionary<int, StudentName>()
{
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211},
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317},
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198}
};

Viel sauberer :)


-1

Hoffe es wird perfekt funktionieren.

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);


Hallo, willkommen bei SO! Die Person, die diese Frage ursprünglich gestellt hat, sagte ausdrücklich, dass sie die .Add(int, "string")Methode zum Hinzufügen von Werten zu einem Wörterbuch nicht ausführen möchte . Entschuldigung, aber das beantwortet die Frage nicht.
— Kezz101

-2

Dies wird im Allgemeinen nicht empfohlen, aber in Zeiten unsicherer Krisen können Sie verwenden

Dictionary<string, object> jsonMock = new Dictionary<string, object>() { { "object a", objA }, { "object b", objB } };

// example of unserializing
ClassForObjectA anotherObjA = null;
if(jsonMock.Contains("object a")) {
    anotherObjA = (ClassForObjA)jsonMock["object a"];
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.