1

私は今日それを失っているようです。ここで私が間違っていることを誰かが見つけるのを手伝ってくれますか:

1. for (int y = 0; y < 5; y++)
2. {
3.      IDataReader getLineInfo = DB.GetRS("Select LineText From TIF Where SCRID ='" + scRID + "' AND LineNum='" + y + "'");
4.      if (getLineInfo.Read())
5.      {
6.            string[] lineText = new string[y];
7.            lineText[y] = (string)getLineInfo["LineText"];
8.
9.            ((Label)item.FindControl(string.Format("lbl{0}", y))).Text = "<a href='" + lineText[y] + "' target='_blank'> Link</a>";
10.     }
11.     getLineInfo.Dispose();
12.     getLineInfo.Close();
13. }

9 行目でエラーが発生します。最初は 'y' が 1 から始まっていました。なぜなら、lineNum == 0 がないからです。しかし、配列が 0 で始まるので、何かがおかしいと思いました。しかし、それは私の問題を解決しませんでした。誰かが私が私ではないものを見るのを手伝ってくれるなら、それは大歓迎です。また、このページにはユーザー入力がありません。select ステートメントを使用する IDataReader 全体が悪い可能性があることを知っているからです。

追加情報が必要な場合は、私がそれを書くことができます。助けてくれる人に感謝します

4

4 に答える 4

3
string[] lineText = new string[y];  // array 0 .. y-1
lineText[y] = ...;                  // y = 1 element too far

また、lineTextはループ内でローカルに作成されるため、単純に に置き換えstring[] lineTextstring lineText忘れることができますy

あなたが必要だと思うならy、このコードには他に何か間違っている/欠けているものがあります。

于 2012-09-19T19:40:06.297 に答える
2

文字列の配列の代わりに文字列だけを使用しないのはなぜですか?

string lineText = (string)getLineInfo["LineText"];

((Label)item.FindControl(string.Format("lbl{0}", y))).Text = "<a href='" lineText + "' target='_blank'> Link</a>";
于 2012-09-19T19:43:56.787 に答える
1

正当な理由があるか

string[] lineText = new string[y];

ループ内ですか?`

また、「y」要素の配列を割り当てた場合、インデックス「y」の要素にアクセスすると例外がスローされます。'y' 要素の配列では、最後の要素はインデックス 'y-1' (0 から開始) にあります。

于 2012-09-19T19:42:40.243 に答える
0

このように配列を宣言する必要があります

 string[] lineText = new string[y+1];
于 2012-09-19T19:40:15.157 に答える