如何在C#中的arraylist中检查元素是否为空?

时间:2016-04-03 11:55:28

标签: c#

ArrayList list = new ArrayList();
for (int i = 0; i < list.Count; i++)
{
    //If list[i] is empty?
}

是否可以检查位置[i]上的值是否为空?如果是这样,怎么解决?

3 个答案:

答案 0 :(得分:1)

列表中没有“空虚”的概念。如果您可以迭代到列表中的元素,那么该元素确实存在,并且某些值。现在,该值可以采用不同的形式在语义上意味着它是“空的”,但这实际上取决于您对“空白”的定义,以及您之前分配的值以使其为空 - 因为只有在您指定一些值时才存在列表元素它。

可以解释为空的常见值是null,这是对任何内容的引用。这是所有引用类型的默认值,因此将其用作“空”是有意义的。但其他价值观可以在这里使用。

一般情况下,您应该考虑只删除这些元素,而不是在列表中添加空值。这样,当迭代你的列表时,你只有非空元素,并且你不需要在任何地方添加一些检查来处理你的特殊空值。

答案 1 :(得分:1)

for (int i = 0; i < list.Count; i++)
{
    //If list[i] is empty?
}

只会循环数组中的元素。您必须通过list.Add(somevalue)或list [i] == somevalue为列表赋值。

如果未分配,则根本不存在。因此,列表不能具有“空”的元素,因为如果未设置该元素,则该元素没有键或值。像其他人一样回答它可能是空的。但是null是一个值。

顺便说一句,我更喜欢像这样使用foreach循环列表

foreach(var item in list) {
    // do something here.
}

这样你就不需要了

var item = list[i];

将值转换为变量。因为它已经由循环设置

答案 2 :(得分:0)

这取决于您的ArrayList包含的内容。你的意思是&#34;空&#34;。但它不应该太难实现。 以下是一些建议:

for(int i = 0; i<list.Count; i++){
    if(list[i] == null){         //for objects
        //do something
    }
    if(list[i].equals("")){      //for empty string
        //do something
    }
    if(list[i].exists){         //for objects you created yourselfs whit a boolean exists-function
        //do something
    }
}

可能会出现一些语法错误,但您明白了! :)