我正在尝试创建一个字典,其中包含整数、字符串和布尔数据类型的数组作为值。我想,我应该使用 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 :)