我在 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));
}
}
这会抛出一个 InnerException:System.IndexOutOfRangeException。但为什么?我无法正确转换这些值。
编辑:我可以假设字典中的所有值都具有相同的列表长度。我确实在其他地方检查过。
最佳答案
我认为这就像让或者你的长度或者你的索引以错误的方式一样简单。这是您的数组创建:
int[,] values = new int[outList.Count, values.Keys.Count];
然后您设置 values[i, j]
其中 i
小于 metrics.Keys.Count
和 j
小于 list.Count
。
您可以或者切换长度或者改为设置values[j, i]
。鉴于数组的原始语句,我怀疑您需要后一种方法。
关于c# - C# 中的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192750/