我今天似乎正在失去它。任何人都可以帮我找到我在这里做错的事情:
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可能不好。
如果需要任何其他信息,我可以将其写入,并感谢任何可以提供帮助的人
答案 0 :(得分:3)
string[] lineText = new string[y]; // array 0 .. y-1
lineText[y] = ...; // y = 1 element too far
此外,lineText
是在循环内部本地创建的,您可以简单地将string[] lineText
替换为string lineText
并忘记y
。
如果您认为自己需要y
,则此代码中还有其他错误/缺失。
答案 1 :(得分:2)
为什么不使用字符串而不是字符串数组?
string lineText = (string)getLineInfo["LineText"];
((Label)item.FindControl(string.Format("lbl{0}", y))).Text = "<a href='" lineText + "' target='_blank'> Link</a>";
答案 2 :(得分:1)
有充分的理由
string[] lineText = new string[y];
在循环内? `
而且,如果你分配一个'y'元素数组,那么访问索引'y'的元素必然会引发异常。在'y'元素数组中,最后一个元素位于索引'y-1'(从0开始)。
答案 3 :(得分:0)
你需要像这样声明你的数组
string[] lineText = new string[y+1];