今天偶然在看别人代码时,发现在他的代码里使用了Any判断List是否为空。

我一般的做法是先判断是否为null,再判断Count。

看了一下Count的源码如下:

[__DynamicallyInvokable]
    public int Count
    {
        [__DynamicallyInvokable]
        get
        {
            return _size;
        }
    }

Any()的源码如下:

[__DynamicallyInvokable]
    public static bool Any<TSource>(this IEnumerable<TSource> source)
    {
        if (source == null)
        {
            throw Error.ArgumentNull("source");
        }

        using (IEnumerator<TSource> enumerator = source.GetEnumerator())
        {
            if (enumerator.MoveNext())
            {
                return true;
            }
        }

        return false;
    }

测试了一下,大量数据情况下,耗时几乎都是0ms,所以应该差别不大。

有时候如果我们想在Visual Studio中单步调试.NET的源码,可以按下面的方式操作

1、调试-》选项-》常规-》取消“仅我的代码”

826348-20240312141948242-1644362345.png

2、调试-》选项-》符号-》钩选Microsoft符号服务器

826348-20240312142112764-1456962351.png

此时再调试时,就能单步调试.NET源码。

826348-20240312143444938-1195735130.gif

如果提示找不到某个符号,可以下载 https://github.com/dotnet/runtime.git (仅.NET Core)仓库里的源码,找到对应的文件

最后修改:2024 年 03 月 14 日
如果觉得我的文章对你有用,请随意赞赏