问题描述
在.NET/C#的程序开发中,如果需要判断一个集合是否为空(或者说是否有元素),我们常用的方法有:
if (myList.Count() == 0) { ... }
或者
if (!myList.Any()) { ... }
除以上两种方式外,还有没有更好,效率更高的实现方式呢?
方案一
public static Boolean IsEmpty<T>(this IEnumerable<T> source)
{
if (source == null)
return true; // or throw an exception
return !source.Any();
}
方案二
使用ICollection
检查,如下:
public static bool IsEmpty<T>(this IEnumerable<T> list)
{
if (list == null)
{
throw new ArgumentNullException("list");
}
var genericCollection = list as ICollection<T>;
if (genericCollection != null)
{
return genericCollection.Count == 0;
}
var nonGenericCollection = list as ICollection;
if (nonGenericCollection != null)
{
return nonGenericCollection.Count == 0;
}
return !list.Any();
}
方案三
public static bool IsEmpty<T>(this IEnumerable<T> enumerable)
{
return !enumerable.GetEnumerator().MoveNext();
}
方案四
if(enumerable.FirstOrDefault() != null)
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册