2009-05-08 5 views
47

Ermöglicht C# Hash-Tabellen in Ein-Zeilen-Ausdrücken gefüllt werden? Ich denke an etwas entsprechen den unter Python:Kürzeste Möglichkeit zum Initialisieren einer C# -Hashtable

mydict = {"a": 23, "b": 45, "c": 67, "d": 89} 

Mit anderen Worten ist es eine Alternative jedes Schlüssel-Wert-Paares in einem separaten Ausdruck Einstellung?

Antwort

73

C# 3 hat eine Spracherweiterung namens Auflistungsinitialisierer, mit denen Sie die Werte einer Auflistung in einer Anweisung initialisieren können.

Hier ist ein Beispiel unter Verwendung eines Dictionary<,>:

using System; 
using System.Collections.Generic; 

class Program 
{ 
    static void Main() 
    { 
     var dict = new Dictionary<string, int> 
     { 
      {"a", 23}, {"b", 45}, {"c", 67}, {"d", 89} 
     }; 
    } 
} 

Diese Spracherweiterung durch die C# 3 Compiler unterstützt wird und jede Art, die eine öffentliche Add Methode IEnumerable und hat implementiert.

Wenn Sie daran interessiert sind, würde ich Sie this question I asked here on StackOverflow zu lesen vorschlagen, warum die C# Team diese Spracherweiterung in solchen neugierig Weise umgesetzt (wenn Sie die ausgezeichnete Antworten auf die Frage lesen, werden Sie sehen, dass es eine Menge macht Sinn).

+1

Gibt es eine ähnliche Syntax für die Definition von Wörterbüchern, die mehrere Ebenen tief sind? Zum Beispiel, 'Dictionary >'? –

+0

Ich habe die Technik gefunden und werde sie als Bearbeitung zu Ihrer Antwort hinzufügen, obwohl es ein bisschen wortreich ist, nicht sicher, ob es viel Zeit spart. –

Verwandte Themen