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")};
kd7iwp
quelle

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}}
};
Daniel Earwicker
quelle
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" } };
Timothy Carter
quelle
12

Sie waren fast da:

var dict = new Dictionary<int, string>()
{ {0, "string"}, {1,"string2"},{2,"string3"}};
Henk Holterman
quelle
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.

Matendie
quelle
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"}
    };
Joseph
quelle
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 :)

Russelrillema
quelle
-1

Hoffe es wird perfekt funktionieren.

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


quelle
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"];
}
Jacksonkr
quelle