C# 索引超出范围。必须为非负数且小于集合的大小

C# 索引超出范围。必须为非负数且小于集合的大小,c#,C#,我有以下代码: 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()) &

我有以下代码:

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\u string
等于第一项数组中的第一项):

正在尝试访问列表中的第三项。当只有一个项目时,它将失败。你为什么选择这里的
2

(顺便提一下,为什么要使用
ArrayList
?首选通用
列表
类型。)

现在还不清楚你想达到什么目的-如果你能给我们更多的背景,我们有更好的机会帮助你

编辑:从评论来看,这应该是

label_hello.Text = "Hello, " + dataR[2];

然而,我怀疑循环仍然不正确。。。为什么要迭代表中的每个值,而不是(比如)只在一列中?

当然,它会给出一个错误

label_hello.Text = "Hello, " + list[2];
这是错误的。
在该阶段,您只有一个元素列表[0]。

您在下面的一行中得到了错误

label_hello.Text = "Hello, " + list[2];
出现该错误的原因是因为没有列表[2]

现在,我不能确切地告诉你你想做什么,但我有一个鬼鬼祟祟的怀疑,你想把‘item’变成某种字符串,你想访问该字符串中的第三个字符

即使如此,请记住,有时用户可能会尝试输入长度不超过3个字符的字符串


如果您能提供更多关于您要做什么的详细信息,我们可以进一步帮助您。

因为这是我想写的arraylist中的元素。@EmilDumbazu:但是列表没有三个元素-第一次看到此语句时,列表将只有一个元素。那么,第三个元素怎么可能是您想要的呢?当textbox中的文本发生更改时,代码将执行。列表中的元素和字符一样多…@EmilDumbazu:不,它没有-仔细看看你的代码。。。创建一个新列表(因此它是空的),如果输入字符串等于项数组中的第一项,则当列表只有一个元素时,它将进入该块并执行失败语句。你到底想做什么还不清楚,但这就是它失败的原因。问一个不知道如何使用数组和索引器的家伙为什么你不使用
泛型
,就像问我,嗯,很多事情……如果它能按你希望的方式工作,你为什么要问?如果您想要这个异常,为什么要询问它?如果您想要第二个元素,请将列表[2]置于foreach循环之外。
label_hello.Text = "Hello, " + list[2];