【譯】在調試時輕松導航代碼委托

程序員有二十年 2024-07-04 12:28:45

委托在現代代碼中無處不在;委托是一種類型,它表示對具有特定參數列表和返回類型的方法的引用。開發人員使用委托將方法作爲參數傳遞給其他方法。您可能熟悉的一個例子是事件處理程序。處理程序是可以通過委托調用的方法。委托讓我想起 C++ 的函數指針,當然委托是完全面向對象的。

有幾種方式來表示委托,例如,Func 委托。此泛型委托表示接受一個或多個參數並返回指定類型值的方法。下面是一個示例(帶有lambda表達式):

Func<int, int> Multiplier = n => n * 5;int val = Multiplier(5);Console.WriteLine(val);

這個概念的最新變體是 Action,它提供了更方便的簡寫。使用 Action時,不必顯式地定義一個用單個參數封裝方法的委托。下面是一個例子:

Action<string> outputFunc = GetOutputRoutine();outputFunc("Hello, World!");static Action<string> GetOutputRoutine(){ return MyConsoleWriter;}static void MyConsoleWriter(string input){ Console.WriteLine("Console: {0}", input);}

所以,這是一堂很好的課,但我爲什麽要提到這些呢?雖然我發現在編寫代碼時像傳遞參數一樣傳遞方法很方便,但我也希望在調試時更容易跟蹤。當然,您可以輕松地單步執行這些方法,但我通常希望在單步執行之前或之後快速導航到由委托表示的底層代碼,隨著 Visual Studio 17.10 的最新更新,這非常容易。

當您在調試時暫停時,您可以將鼠標懸停在任何委托上並獲得一個方便的跳轉,這裏是一個帶有Func委托的示例。

在本例中,Go to Source 清楚地表明,您將被重定向回 lambda 表達式。

請注意,這不僅僅適用于托管代碼的情況,它還支持 C++ 函數指針和 std::function。

我們感謝您的反饋,幫助我們改進 Visual Studio,使其成爲您最好的工具!您可以通過開發者社區與我們分享反饋,通過發送反饋來報告問題或分享您的建議,推動對新功能或現有功能的改進。

請在 Twitter 上與 Visual Studio Debugger 團隊保持聯系。

原文鏈接:https://devblogs.microsoft.com/visualstudio/easily-navigate-code-delegates-while-debugging/

0 阅读:0

程序員有二十年

簡介:感謝大家的關注