检查List <t>是否有任何值而不调用Count?</t>

时间:2014-10-26 16:59:24

标签: c# .net

如果我忽视了一些明显的东西,我很好奇: 我经常使用List<T>,我经常需要检查它是否包含任何值。我调用List<T>.Count()来查看计数是否大于0.这感觉就像一个昂贵的操作,只是想要查看它是否包含任何值。

是否有一些被忽视的方法来检查这个?一个IsEmpty()类的东西?

2 个答案:

答案 0 :(得分:7)

您可以使用

list.Any()

但是当你实际处理一个列表时,这个操作同样便宜。 如果它是一个实现IEnumerable但不是IList的集合,那么使用Any会更便宜。

答案 1 :(得分:4)

  

这感觉就像一个昂贵的操作,只是想要执行   看它是否包含任何值。

不用担心,如果底层类型支持.Count()扩展方法将回退到.Count属性。

当然,如果在编译时你有一个IList<T>,那么你最好直接使用.Count属性。但是,如果您只有IEnumerable<T>(其具体实现恰好是List<T>),则可以使用.Count()扩展方法,而不会出现任何性能问题。