整数、文字列、ブール値のデータ型の配列を値として持つ辞書を作成しようとしています。私は、object []を値として使用する必要があると考えたので、宣言は次のようになります。
Dictionary<long, object[]> netObjectArray = new Dictionary<long, object[]>();
その要素の値を何かに設定しようとすると、VSは辞書にそのようなキーが見つからなかったと言います。
netObjectArray[key][2] = val; // ex: The given key was not present in the dictionary.
これを正しく処理するにはどうすればよいですか?
UPD1: どういうわけか、この例外をスローする直前に、他の辞書が同様の方法で問題なく使用されます。
Dictionary<long, Vector2> netPositions = new Dictionary<long, Vector2>();
netPositions[key] = new Vector2(x, y); // works ok
このローカルが表示された後、値が割り当てられ、辞書にそのエントリが含まれるようになります。他の辞書ではそうではないのはなぜですか?
解決策:値の配列に値を書き込む前に、まずその配列を初期化する必要があります。このコードは私のために働きます:
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 :)