我正在試圖創建一個帶整數,字符串和布爾型數據類型數組的字典作爲值。我想,我應該使用對象[]作爲值,所以聲明看起來如此:不同數據類型的數組作爲值的字典
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 :)
有你'初始化netObjectArray [關鍵]'至少'新的對象[2]'? – 2012-04-10 20:19:39
此外,在Dictionary中存儲這樣的不同類型是一種糟糕的代碼異味。你真的需要嗎,還是可以用更好的格式封裝數據? – 2012-04-10 20:22:30
您可以使用'Tuple'作爲值。 http://msdn.microsoft.com/en-us/library/system.tuple.aspx –
2012-04-10 20:25:13