索引超出范围.必须是非负数并且小于集合的大小

本文关键字:小于 集合 范围 是非 索引 | 更新日期: 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个字符的字符串。

如果你能提供更多关于你想做什么的细节,我们可以进一步帮助你。

相关文章: