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.