Der Grund, warum Ihr Code nicht funktioniert ist in How to : Initialisieren Sie ein Dictionary mit einem Auflistungsinitialisierer (C # -Programmierhandbuch) :
Ein Dictionary enthält eine Sammlung von Schlüssel / Wert-Paaren. Die Add-Methode benötigt zwei Parameter, einen für den Schlüssel und einen für den Wert. Um ein Dictionary zu initialisieren, oder eine Auflistung, deren Add-Methode mehrere Parameter verwendet , schließen Sie jeden Parametersatz in geschweifte Klammern ein ...
Also in der Syntax
%Vor% Der Compiler erwartet von Ihrer Sammlung eine Add(string, string, string)
-Methode. Da es für List<string []>
keine solche Methode gibt, schlägt die Kompilierung fehl.
Tatsächlich ist es möglich, eine solche Sammlung zu erstellen und mit dieser Syntax zu initialisieren. Wenn Sie die folgende Sammlung erstellen:
%Vor%Folgendes wird erfolgreich kompiliert und eine Sammlung mit einem 3-Tupel erstellt:
%Vor% Sie können auch die folgende List
-Unterklasse erstellen:
Und initialisiere es mit der gewünschten Syntax:
%Vor% Aber für List<string []>
müssen Sie, wie von anderen bemerkt wurde, Ihre Synonymliste initialisieren, indem Sie explizit jeden string []
-Eintrag zuweisen, anstatt einen impliziten Sammlungsinitialisierer für jeden Eintrag zu verwenden:
Erstellen Sie implizit typisierte Arrays für Ihren List
Initialisierer:
new [] { ... }
entspricht der Ausführung von new string[] { ... }
, wenn die Typen der Objekte im Array alle string
sind. Sie erhalten einen Fehler mit der impliziten Syntax, wenn die Typen der Objekte im Array unterschiedlich sind.