索引超出范围.必须是非负数并且小于集合的大小
本文关键字:小于 集合 范围 是非 索引 | 更新日期: 2023-09-27 18:20:40
我有这个代码:
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!
好吧,您从一个空列表开始,然后在添加单个项目后,您可能会执行(如果input_string
等于第一个项目数组中的第一个项目):
label_hello.Text = "Hello, " + list[2];
这是在尝试访问列表中的第三个项。当只有一个项目时,它将失败。为什么在这里选择2
?
(顺便说一句,你为什么要使用ArrayList
?一般的List<T>
类型是首选。)
目前尚不清楚您试图实现什么-如果您能给我们更多的背景,我们就有更好的机会帮助您。
编辑:从评论来看,这应该是
label_hello.Text = "Hello, " + dataR[2];
然而,我怀疑这些循环仍然不正确。。。为什么要迭代表中的每个值,而不是(比如)只在一列中?
当然会出现错误。
label_hello.Text = "Hello, " + list[2];
是错误的。在那个阶段,您只有一个元素列表[0]。
您在以下行中收到错误
label_hello.Text = "Hello, " + list[2];
你得到这个错误的原因是因为没有列表[2]
现在,我不能确切地说出你想做什么,但我有一种狡猾的怀疑,你打算把"item"作为某种字符串,并且你想访问该字符串中的第三个字符。
即便如此,请记住,有时用户可能会尝试输入长度不超过3个字符的字符串。
如果你能提供更多关于你想做什么的细节,我们可以进一步帮助你。