Wie initialisiert man KeyValuePair Objekt richtig?
Ich gesehen habe (unter anderem) diese Frage, dass die Menschen sich Fragen, wie die Initialisierung der Instanz von KeyValuePair, die erwartungsgemäß sollte wie folgt Aussehen.
KeyValuePair<int, int> keyValuePair = new KeyValuePair<int, int>
{
Key = 1,
Value = 2
};
Es nicht funktioniert, wenn die Eigenschaften nicht vorhanden sind. Intead, muss ich den Konstruktor verwenden wie diese.
KeyValuePair<int, int> keyValuePair = new KeyValuePair<int, int>(1, 2);
Zwar eine kürzere syntax, aber es stört mich, dass ich nicht die Initialisierung verwenden. Was mache ich falsch?
InformationsquelleAutor der Frage | 2013-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie sind nicht falsch, müssen Sie Sie initialisieren ein keyValuePair mit
Dem Grund, dass Sie nicht verwenden die Objekt-Initialisierung syntax ie { Key = 1, Wert = 2 } ist, da die Schlüssel und Wert-Eigenschaften haben keine setter nur Getter (Sie sind readonly). So können Sie selbst tun:
InformationsquelleAutor der Antwort Kevin Holditch
KeyValuePair<int, int>
ist eine Struktur, die, und, zum Glück, es ist unveränderlich struct. Insbesondere bedeutet dies, dass seine Eigenschaften nur gelesen werden. So können Sie nicht verwenden Objekt-intializer für Sie.InformationsquelleAutor der Antwort Dennis
Ok, Sie haben die Antworten. Als alternative, die ich bevorzuge, Fabrik-Muster ähnlich
Tuple
Klasse, für die Typ-Inferenz Magie 🙂So kurz, immer kürzer wird:
InformationsquelleAutor der Antwort nawfal
Schlüssel-Wert-Eigenschaften haben keine setter. Das ist, warum Sie nicht verwenden können Sie in der Initialisierung. Verwenden Sie einfach den Konstruktor übergeben werden 🙂 und du wirst in Ordnung sein.
InformationsquelleAutor der Antwort Mihail Shishkov
Geht hier ein Beispiel, dass der job
InformationsquelleAutor der Antwort Paulo Carvalho
Wörterbücher kompakte Initialisierungen:
In diesem Fall ist das Wörterbuch, das ich assoziiert Datei-extensions mit Bild-format-Konstanten-Diagramm-Objekte.
Einem einzigen keyvaluepair können zurückgegeben werden, aus dem Wörterbuch wie dieses:
InformationsquelleAutor der Antwort flodis
Den Schlüssel und Wert Eigenschaften sind read-only, daher können Sie nicht verwenden, Sie in einen objektinitialisierer.
Siehe diesen Eintrag in der C# - Programmierhandbuch.
InformationsquelleAutor der Antwort Phil
Sind Sie nicht, etwas falsch zu machen. Die KeyValuePairs Eigenschaften sind read-only. Sie können nicht legen Sie. Zusätzlich, es gibt keinen leeren default-Konstruktor. Sie müssen den Konstruktor zur Verfügung gestellt.
InformationsquelleAutor der Antwort nvoigt