检查列表<;T>;具有任何值,而不调用Count

本文关键字:调用 Count 任何值 lt 列表 gt 检查 | 更新日期: 2023-09-27 18:28:03

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

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

检查列表<;T>;具有任何值,而不调用Count

您可以使用

list.Any()

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

这感觉像是一项昂贵的手术,因为只想看看它是否包含任何值。

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

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