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 <= 12ため 、書き直す必要があります。k < 13

于 2012-11-12T17:55:23.977 に答える
2

何が入っていdtr3[12]ますか? それは戻りnullますか?
の値はcnt2?

于 2012-11-12T18:44:37.903 に答える
1

kの最後の有効な値が12であるため、k = 13としてループを終了し、ループを通過してk ++を実行します(13になります)。13> 12であるため、その時点で条件が失敗し、実際に終了します。

于 2012-11-12T17:58:01.080 に答える
1

これは、アクセスしようとしているほど多くの要素が配列に含まれていないことを意味します。

于 2012-11-12T17:55:32.747 に答える