2014-10-26 23 views
2

我很好奇,如果我忽略了一些显而易见的事情: 我经常使用List<T>,我经常需要检查它是否包含任何值。我打电话List<T>.Count()查看计数是否大于0.这看起来像是一个昂贵的操作,只是想要查看它是否包含任何值。检查列表<T>是否具有任何值而不调用Count?

有没有一些被忽视的方法来检查这个? A IsEmpty()种事情?

回答

4

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

别担心,.Count()扩展方法将回退到.Count属性,如果下属类型支持它。

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

7

您可以使用

list.Any() 

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

相关问题