如下:
private static Dictionary<string, float[,]> getDic()
{
float[,] floatArr = new float[2, 3];
//赋值
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
floatArr[i, j] = (i + 1) * (j + 1);
}
}
float[,] floatArr1 = new float[1,1];
//赋值
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < 1; j++)
{
floatArr1[i, j] = (i + 1) * (j + 1);
}
}
//将两个二维数组加入到dictionary中
Dictionary<string, float[,]> Dic = new Dictionary<string, float[,]>();
Dic.Add("a",floatArr);
Dic.Add("b", floatArr1);
return Dic;
}
问题:如何遍历dictionary后再遍历其中的二维数组获得二维数组中的值?
谢谢各位,希望能够得到解答~~~
...
for(int i=0; i<dic[key].length; i++){
for(int j=0; j<dict[key][i].length; j++){
dict[key][i][j]
}
}
不好意思, dict[key][i].length 这个有错吧,我写出来,这个东西要报错!
@chenjingcq:
--! length 第一个字母大写
@向往-SONG: 呵呵,大哥,不是这个意思,我知道该大写,我的意思这种方式会报错,况且dict[key][i][j]这种方式也报错!
@向往-SONG: 还有,比如我的二维数组是float[2,3],那么这个数组通过dic[key]这种方式获取长度是2*3=6,那么在你的第一个for循环中 i 就会有6个取值,这也是问题,本来要循环这个二维数组应该第一层是2次,第二层是3次,现在你的第一层就6次~~~
@chenjingcq:
还真没注意,一直以为是这么写的,刚试了下,应该是这样:
foreach (string key in dic.Keys) { for (int i = 0; i < dic[key].GetLength(0); i++) { for (int j = 0; j < dic[key].GetLength(1); j++) { Console.Write(dic[key][i, j]); } } }
@向往-SONG: OK!谢谢!明白了,其实
dic[key].GetLength(0)
dic[key].GetLength(1)
就是获取float[2,3]中的2和3,非常感谢!
foeach(string key in dic.keys)
{
foreach(float f in dic[key])
{do }
}
谢谢,这种方式能够解决!但是如果将第二重循环改为双重for循环来遍历二维数组的话,好像不行吧?
如:
foreach(string key in dic.keys)
{
//遍历二维数组
for()
{
for()
{
}
}
}