Ich versuche, ein Dictionary mit Array von Ganzzahl, String und booleschen Datentypen als Werte zu erstellen. Ich dachte, ich sollte Objekt verwenden [] als Wert, so Deklaration so aussehen:Wörterbuch mit Array von verschiedenen Datentypen als Wert
Dictionary<long, object[]> netObjectArray = new Dictionary<long, object[]>();
Immer wenn ich versuche ihr Element den Wert auf etwas einstellen, VS sagt, daß es keine solche Schlüssel im Wörterbuch gefunden wurde.
netObjectArray[key][2] = val; // ex: The given key was not present in the dictionary.
Wie arbeite ich damit richtig?
UPD1: Irgendwie Recht vor, diese Ausnahme zu werfen, die andere Wörterbuch ohne Probleme in ähnlicher Weise verwendet:
Dictionary<long, Vector2> netPositions = new Dictionary<long, Vector2>();
netPositions[key] = new Vector2(x, y); // works ok
Nach dieser Einheimischen der Wert zeigen, wurde zugewiesen und Wörterbuch enthält jetzt den Eintrag . Warum ist das bei meinem anderen Wörterbuch nicht der Fall?
Lösung: Bevor Sie einen Wert in ein Array von Werten schreiben, müssen wir zuerst dieses Array initialisieren. Dieser Code funktioniert für mich:
try { netObjectArray[key] = netObjectArray[key]; } // if the object is undefined,
catch { netObjectArray[key] = new object[123]; } // this part will create an object
netObjectArray[key][0] = new Vector2(x, y) as object; // and now we can assign a value to it :)
Haben Sie initialisierten 'netObjectArray [key]' mindestens 'neues Objekt [2]'? –
Außerdem ist das Speichern verschiedener Typen wie dieses in einem Dictionary ein schlechter Code-Geruch. Brauchen Sie das wirklich oder können Sie die Daten in einem besseren Format kapseln? –
Sie könnten stattdessen ein 'Tuple' als Wert verwenden. http://msdn.microsoft.com/en-us/library/system.tuple.aspx –