最佳答案
确定列表是否为空的“最佳”(考虑速度和可读性)方法是什么?即使列表是 IEnumerable<T>
类型且没有 Count 属性。
现在我在这两者之间辗转反侧:
if (myList.Count() == 0) { ... }
还有这个:
if (!myList.Any()) { ... }
我猜测第二个选项会更快,因为它一看到第一个项目就会返回结果,而第二个选项(对于 IEnumable)需要访问每个项目才能返回计数。
话虽如此,你觉得第二个选项看起来可读吗?你喜欢哪个?或者你能想到一个更好的方法来测试一个空列表吗?
编辑 @lassevk 的响应似乎是最合乎逻辑的,如果可能的话,再加上一点运行时检查来使用缓存计数,如下所示:
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;
return !list.Any();
}