非空List对象的Count是否总是大于0?

时间:2017-01-12 15:42:18

标签: c# .net list

在C#中,如果ansible.cfg对象不为空,这是否也意味着List()总是大于0?

例如,如果您有Count类型的对象intList,以下代码是否冗余?

List<int>

3 个答案:

答案 0 :(得分:7)

不,有一个空列表是完全有效的:

List<int> intList = new List<int>();
bool isEmpty = intList.Count == 0; // true

如果您想知道列表是否为空并且至少包含一个项目,您还可以使用新的C#6 null conditional operator

List<int> intList = null;
bool isNotEmpty = intList?.Count > 0; // no exception, false

答案 1 :(得分:1)

不,该代码不是多余的。 intList可以为null或intList.Count == 0。以下是一些案例:

List<int> intList = null;

Console.WriteLine(intList);  // it will print 'null'

intList = new List<int>();

Console.WriteLine(intList.Count); // it will print '0'

在现代C#中,您可以使用Null-conditional operator来简化检查。这种语法在性能上与null的测试相当,它只是简化这种常见检查的语法糖。

if (intList?.Count > 0) {
    // do something
}

答案 2 :(得分:1)

以上所有答案都是自我解释的。 只是尝试添加更多

if(intList!= null&amp;&amp; intList.Count&gt; 0) 这里检查计数以确保在列表上执行任何操作之前intList中至少有一个项目。 除了空检查之外,我们检查计数的最常见用例是当我们想要通过列表的项目进行迭代时。

if (intList != null && intList.Count > 0) 
{
    foreach(var item in intList)
    {
        //Do something with item.
    }
}

如果list为空,那么尝试迭代就没有意义了。

但是如果intList不是null,那并不意味着它有计数&gt;如果count必须大于零,则需要将项目添加到列表中。