号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

[LINQ].NET/C#程序开发中如何如何检查一个集合是否为空?

C#开发 作者: Rector 793阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在.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)

阅读了该文章的人还浏览了...

本文永久链接码友网 » [LINQ].NET/C#程序开发中如何如何检查一个集合是否为空?

发布于: 2018-03-08 22:16:53
分享扩散: