如何在Visual Studio中除錯.NET原始碼

zhaotianff發表於2024-03-12

今天偶然在看別人程式碼時,發現在他的程式碼裡使用了Any判斷List<T>是否為空。

我一般的做法是先判斷是否為null,再判斷Count。

看了一下Count的原始碼如下:

1     [__DynamicallyInvokable]
2     public int Count
3     {
4         [__DynamicallyInvokable]
5         get
6         {
7             return _size;
8         }
9     }

Any()的原始碼如下:

 1     [__DynamicallyInvokable]
 2     public static bool Any<TSource>(this IEnumerable<TSource> source)
 3     {
 4         if (source == null)
 5         {
 6             throw Error.ArgumentNull("source");
 7         }
 8 
 9         using (IEnumerator<TSource> enumerator = source.GetEnumerator())
10         {
11             if (enumerator.MoveNext())
12             {
13                 return true;
14             }
15         }
16 
17         return false;
18     }

測試了一下,大量資料情況下,耗時幾乎都是0ms,所以應該差別不大。

有時候如果我們想在Visual Studio中單步除錯.NET的原始碼,可以按下面的方式操作

1、除錯-》選項-》常規-》取消“僅我的程式碼”

2、除錯-》選項-》符號-》鉤選Microsoft符號伺服器

此時再除錯時,就能單步除錯.NET原始碼。

除錯效果:

如果提示找不到某個符號,可以下載 https://github.com/dotnet/runtime.git (僅.NET Core)倉庫裡的原始碼,找到對應的檔案

相關文章