列出<T>任何或计数?

Dom*_*ing 54 c# linq c#-4.0

当我想用列表做某事时我首先检查它是否不null包含或不包含任何元素(不是吹嘘foreach)我通常使用list.Any()但最好的选择 - 使用list.Count > 0或使用list.Any()?

Ray*_*Ray 82

  • 如果您使用列表,请使用Count,因为它知道它的大小.
  • 使用数组的长度
  • 如果你只有IEnumerable,我会使用.Any()而不是.Count(),因为它会更快,因为它在检查一个项目后停止.

还要看看这个问题:哪种方法表现更好:.Any()vs .Count()> 0?

  • 不!- 如果可以的话,__always__ 使用“Any”,因为无论如何它都会尽可能翻译为“Count”或“Length”,并给出清晰且统一的意图。 (2认同)
  • @TaW _总是使用Any,因为无论如何它都会转换为Count或Length_您可以用一些源代码来备份它,因为我不相信您。抱歉。 (2认同)

Meh*_*dad 5

我使用list.Count > 0它只是因为它不依赖LINQ方法,因此可以在C#2.0上使用。

我个人避免像瘟疫一样使用LINQ(因为它的速度较慢),而且无论如何也没有理由在这里使用扩展方法。

但是,更好的解决方案可能是使自己的版本Any带有null引用,如果它是包含元素的集合,则返回true。这将为您节省空检查。

  • LINQ可能比for循环慢。但是它应该避免的速度并不慢。我相信它对性能造成的小损失值得,因为它使代码更易于维护。 (5认同)