webentwicklung-frage-antwort-db.com.de

Welche Vorteile bieten Wörterbuchinitialisierer gegenüber Erfassungsinitialisierern?

In letzter Zeit wurde viel darüber gesprochen, was in C # 6.0 neu ist
Eine der am häufigsten diskutierten Funktionen ist die Verwendung von Dictionary -Initialisierern in C # 6.0
Aber warte, wir haben Sammlungsinitialisierer verwendet, um die Sammlungen zu initialisieren und können ein Dictionary auch in .NET 4.0 und .NET 4.5 (keine Ahnung von alter Version) wie sehr gut initialisieren

Dictionary<int, string> myDict = new Dictionary<int, string>() {
    { 1,"Pankaj"},
    { 2,"Pankaj"},
    { 3,"Pankaj"}
};

Was gibt es Neues in C # 6.0, über welchen Dictionary-Initialisierer in C # 6.0?

47
Pankaj

Während Sie ein Wörterbuch mit Auflistungsinitialisierern initialisieren können, ist dies recht umständlich. Besonders für etwas, das syntaktischer Zucker sein soll.

Wörterbuchinitialisierer sind viel sauberer:

var myDict = new Dictionary<int, string>
{
    [1] = "Pankaj",
    [2] = "Pankaj",
    [3] = "Pankaj"
};

Noch wichtiger ist, dass diese Initialisierer nicht nur für Wörterbücher verwendet werden, sondern auch für jedes Objekt, das einen Indexer unterstützt, zum Beispiel List<T>:

var array = new[] { 1, 2, 3 };
var list = new List<int>(array) { [1] = 5 };
foreach (var item in list)
{
    Console.WriteLine(item);
}

Ausgabe:

1
5
3
75
i3arnon

Neu ist das Erstellen eines Wörterbuchs auf diese Weise

Dictionary<int, string> myDict = new Dictionary<int, string>() {
    [1] = "Pankaj",
    [2] = "Pankaj",
    [3] = "Pankaj"
};

mit dem Stil von <index> = <value>

Veraltet: String-indizierte Member-Syntax (wie in den Kommentaren angegeben)

Dictionary<int, string> myDict = new Dictionary<int, string>() {
        $1 = "Pankaj",
        $2 = "Pankaj",
        $3 = "Pankaj"
    };

Aus A C # 6.0-Sprachvorscha

Um den $ -Operator zu verstehen, werfen Sie einen Blick auf den AreEqual-Funktionsaufruf. Beachten Sie den Dictionary-Member-Aufruf von "$ Boolean" für die Variable "builtInDataTypes" - auch wenn im Dictionary kein "Boolean" -Member vorhanden ist. Ein solches explizites Element ist nicht erforderlich, da der $ -Operator das indizierte Element im Wörterbuch aufruft, was dem Aufrufen von buildInDataTypes ["Boolean"] entspricht.

0
Jehof