it-swarm.com.de

Richtige Methode zum Initialisieren eines C # -Wörterbuchs mit Werten?

Ich erstelle ein Wörterbuch in einer C # -Datei mit dem folgenden Code:

private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
        = new Dictionary<string, XlFileFormat>
        {
            {"csv", XlFileFormat.xlCSV},
            {"html", XlFileFormat.xlHtml}
        };

Unter new befindet sich eine rote Linie mit dem Fehler:

Das Feature 'Collection Initilializer' kann nicht verwendet werden, da es nicht Teil der ISO-2 C # -Sprachenspezifikation ist

Kann mir jemand erklären, was hier los ist?

EDIT: Okay, es stellte sich heraus, dass ich .NET Version 2 verwendet habe.

409
azrosen92

Ich kann dieses Problem in einer einfachen .NET 4.0-Konsolenanwendung nicht reproduzieren:

static class Program
{
    static void Main(string[] args)
    {
        var myDict = new Dictionary<string, string>
        {
            { "key1", "value1" },
            { "key2", "value2" }
        };

        Console.ReadKey();
    }
}

Können Sie versuchen, es in einer einfachen Konsolenanwendung zu reproduzieren und von dort aus fortzufahren? Es ist wahrscheinlich, dass Sie .NET 2.0 (das es nicht unterstützt) oder das Client-Profil-Framework als Ziel verwenden, anstatt eine Version von .NET zu verwenden, die die Initialisierungssyntax unterstützt.

676
Haney

Mit C # 6.0 können Sie ein Wörterbuch auf folgende Weise erstellen:

var dict = new Dictionary<string, int>
{
    ["one"] = 1,
    ["two"] = 2,
    ["three"] = 3
};

Es funktioniert sogar mit benutzerdefinierten Typen.

178
Vikram Kumar

Sie können eine Dictionary (und andere Sammlungen) inline initialisieren. Jedes Mitglied ist in geschweiften Klammern enthalten:

Dictionary<int, StudentName> 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 } }
};

Siehe MSDN für Details.

32
Brendan

Angenommen, wir haben ein Wörterbuch wie dieses

Dictionary<int,string> dict = new Dictionary<int, string>();
dict.Add(1, "Mohan");
dict.Add(2, "Kishor");
dict.Add(3, "Pankaj");
dict.Add(4, "Jeetu");

Wir können es wie folgt initialisieren.

Dictionary<int, string> dict = new Dictionary<int, string>  
{
    { 1, "Mohan" },
    { 2, "Kishor" },
    { 3, "Pankaj" },
    { 4, "Jeetu" }
};
14
Debendra Dash

Objektinitialisierer wurden in C # 3.0 eingeführt. Überprüfen Sie, auf welche Framework-Version Sie abzielen.

Überblick über C # 3.

8
Zbigniew