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