我有这段代码:
ArrayList list = new ArrayList();
foreach (DataRow dataR in prenume.Rows)
{
foreach (var item in dataR.ItemArray)
{
if (item.Equals(" ")) continue;
list.Add(item);
if (input_string.Equals(item.ToString()) && list.Count > 0 )
{
label_hello.Text = "Hello, " + list[2];
}
}
}
当我试图清除显示的文字时,我收到一个错误,上面写着:
指数超出范围。必须是非负的且小于大小 该系列。
稍后编辑:
Solution found!I was too tired ... sorry for the question!
答案 0 :(得分:3)
好吧,你从一个空列表开始,然后在添加一个项目之后,你可以执行(如果input_string
等于第一个项目数组中的第一个项目):
label_hello.Text = "Hello, " + list[2];
那是试图访问列表中的第三个项目。当只有一个项目时它会失败。你为什么选择2
?
(另外,为什么使用ArrayList
?首选List<T>
类型。)
目前还不清楚你尝试实现的目标 - 如果你能给我们更多的背景信息,我们就有更好的机会帮助你。
编辑:从评论中看,这应该是
label_hello.Text = "Hello, " + dataR[2];
但是,我怀疑循环仍然不正确...为什么要迭代表中的每个值,而不是(比如说)在一列中?
答案 1 :(得分:2)
当然会出错。
label_hello.Text = "Hello, " + list[2];
错了。 在那个阶段你只有一个元素列表[0]。
答案 2 :(得分:1)
你在下一行收到错误
label_hello.Text = "Hello, " + list[2];
您收到该错误的原因是因为没有列表[2]
现在,我无法确切地说出你要做什么,但我有一种偷偷摸摸的怀疑,你打算'item'是某种字符串,并且你想要访问该字符串中的第三个字符。
即便如此,请记住,有时用户可能会尝试输入长度不超过3个字符的字符串。
如果您可以提供有关您尝试做的更多详情,我们可以为您提供进一步的帮助。