友
我有一个错误,告诉“索引超出了数组的范围”我不知道它发生了什么,因为在完成for循环并再次进入循环后它显示出从循环退出时的变量值之前。
int[,] arrScr = new int[lstTest.Count, cnt2 + 3];
string[,] arrName = new string[lstTest.Count, cnt2 + 3];
int p;
for (i = 0; i < lstTest.Count; i++)
{
using (DataTableReader dtr3 = ds.Tables["scord_mark_table" + (i + 1).ToString()].CreateDataReader())
{
p = 0;
while (dtr3.Read())
{
arrName[i, 2 + p] = dtr3[15].ToString();
for (int k = 2; k < 12; k++)
{
arrScr[i, 2 + p] += Convert.ToInt32(dtr3[k].ToString());
}
p++;
}
}
答案 0 :(得分:2)
将k <= 12
更改为k < 12
。
如果这不是您的问题的原因,您应该将k <= 12
重写为k < 13
,因为这是大多数编码人员习惯读写的惯例。
答案 1 :(得分:2)
dtr3[12]
中的内容是什么?它会返回null
吗?
cnt2
的价值是什么?
答案 2 :(得分:1)
这意味着您的数组不包含您尝试访问的元素。
答案 3 :(得分:1)
它将从循环中退出为k = 13,因为k的最后一个有效值是12,然后它经历了循环,执行了k ++(使其成为13)。在这一点上它失败了因为13> 12,那就是它实际退出的时候。