非空列表对象的计数是否总是大于 0?

Is the Count of a not null List object always greater than 0?

在 C# 中,如果 List() 对象不为空,是否也意味着 Count 将始终大于 0?

例如,如果你有一个类型为List<int>的对象intList,下面的代码是否多余?

if (intList != null && intList.Count > 0) {
    // do something
}

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

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

不,该代码并不多余。 intList 可以为空或 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
}

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

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

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

如果列表为空,则尝试遍历它是没有意义的。

但是如果 intList 不为空,这并不意味着它的计数 > 0。如果计数必须大于零,则需要将项目添加到列表中。