我用C#定义了这个多维数组:
int[,] values = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
现在,这些值不再以这种形式出现,而是出现在字典中:
values2.Add("KeyA", new List<float> {1,4});
values2.Add("KeyB", new List<float> {2,5});
values2.Add("KeyC", new List<float> {3,6});
现在我试图在二维数组中再次解析这个字典,但不知何故出现了一些问题:
List<float> outList = new List<float>();
values2.TryGetValue(values2.Keys.ElementAt(0) as string, out outList);
int[,] values = new int[outList.Count, values2.Keys.Count];
for (int i = 0; i < values2.Keys.Count; i++)
{
List<float> list = new List<float>();
values2.TryGetValue(values2.Keys.ElementAt(i), out list);
for (int j = 0; j < list.Count; j++)
{
values[i, j] = Convert.ToInt32(list.ElementAt(j));
}
}
这将引发一个内部异常:System.IndexAutoFrangeException。但为什么呢?我无法正确转换这些值。
编辑:可以假设字典中的所有值都具有相同的列表长度。我在别的地方查过。