0

朋友们

我有一个错误,它告诉“索引超出了数组的范围”我不知道它正在发生,因为在完成 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++;
                }
            }

在此处输入图像描述

4

4 回答 4

2

更改k <= 12k < 12

如果这不是你的问题的原因,你应该重写k <= 12k < 13因为这是大多数编码器用来读写的约定。

于 2012-11-12T17:55:23.977 回答
2

里面有什么dtr3[12]?它回来了null吗?
的价值是cnt2多少?

于 2012-11-12T18:44:37.903 回答
1

这意味着您的数组不包含您尝试访问的那么多元素。

于 2012-11-12T17:55:32.747 回答
1

它将以 k = 13 退出循环,因为 k 的最后一个有效值是 12,然后它通过循环,执行 k++(使其变为 13)。此时它不符合条件,因为 13 > 12 并且那是它实际退出的时间。

于 2012-11-12T17:58:01.080 回答