c# - C# 中的多维数组

标签 c# arrays multidimensional-array

我在 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/

相关文章:

计算数字在二维数组 C 中出现的次数

c++ - C++中动态数组的Getter不起作用

c# - 使用证书从 .net 调用 php webservice

php - Smarty in_array 值

python - 比较大型数组集

java - 使用 while 循环而不是 for 循环创建二维数组以提高运行时效率

c# - 是否有必要 gchandle.alloc() 类中的每个回调?

c# - 排除回车的正则表达式返回与回车的匹配

c# - 以编程方式检查统一容器类型注册

php - 从 Foreach 创建数组