for(int k=0;k <= odds.GetLength(-1);k++)
Run Code Online (Sandbox Code Playgroud)
上面的代码行应该迭代一个Double类型的二维数组,但不断抛出以下异常.索引超出范围异常.有人会善意解释原因并提供解决方案.非常感谢.
Ode*_*ded 52
您正在传递无效索引GetLength.多维数组的维度是0基于的,因此-1无效并且使用负数(或大于维数的数字 - 1)将导致IndexOutOfRangeException.
这将循环第一维:
for (int k = 0; k < odds.GetLength(0); k++)
Run Code Online (Sandbox Code Playgroud)
您需要添加另一个循环来完成第二个维度:
for (int k = 0; k < odds.GetLength(0); k++)
for (int l = 0; l < odds.GetLength(1); l++)
var val = odds[k, l];
Run Code Online (Sandbox Code Playgroud)
好吧,通常当你想迭代2D数组时:
for(int col = 0; col < arr.GetLength(0); col++)
for(int i = row; row < arr.GetLength(1); row++)
arr[col,row] = /*something*/;
Run Code Online (Sandbox Code Playgroud)
数组总是从零开始,因此没有必要尝试在-1索引处获得某些东西.
小智 6
string[,] arr = new string[2, 3];
arr[0, 0] = "0,0";
arr[0, 1] = "0,1";
arr[0, 2] = "0,2";
arr[1, 0] = "1,0";
arr[1, 1] = "1,1";
arr[1, 2] = "1,2";
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Response.Write(string.Format("{0}\t", arr[i, j]));
}
Response.Write("<br/>");
}
Run Code Online (Sandbox Code Playgroud)