检查列表为空时哪个更好:不为null或使用Any

Rai*_* Vu 4 c# list

检查列表为空时哪个更好?

var newList;

if(newList!= null)

or newList.Any()
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,有时我检查不为null,有时我使用Any(),我不知道哪一个是最佳实践,为什么?

有什么建议?

提前致谢

Pac*_*ac0 11

这些都不一样.

Any如果在null引用上使用,将抛出异常.

使用列表,您可以将其.Any()视为.Count() != 0(*)

您可能要同时检查,你必须在调用之前做的空检查Any()你的IEnumerable.

一种方法是?.Thierry V的答案中使用零安全导航在一次打击中检查它们.

但有时你想抛出一个自定义异常,如果你有一个你不应该有的空值,并将空列表视为正确的输入,所以这一切都取决于上下文.

请记住,这些是不同的.

(*):在评论中注意到,.Any()实际上并未实现为Count() == 0.对于列表,它在功能上是等效的,但最好的做法是Any()用来测试a是否IEnumerable为空,因为Count()可能需要遍历所有元素.


Ant*_*e V 5

nullAny()有不同的目的.

Any 用于检查列表是否包含任何项目.

在调用之前Any,你的列表必须不是null,它不是,它会抛出Null异常.

想一想 newList?.Any()