委托在现代代码中无处不在;委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。开发人员使用委托将方法作为参数传递给其他方法。您可能熟悉的一个例子是事件处理程序。处理程序是可以通过委托调用的方法。委托让我想起C++的函数指针,当然委托是完全面向对象的。
有几种方式来表示委托,例如,Func委托。此泛型委托表示接受一个或多个参数并返回指定类型值的方法。下面是一个示例(带有lambda表达式):
Funcint,intMultiplier=n=n*5;intval=Multiplier(5);(val);
这个概念的最新变体是Action,它提供了更方便的简写。使用Action时,不必显式地定义一个用单个参数封装方法的委托。下面是一个例子:
ActionstringoutputFunc=GetOutputRoutine();outputFunc("Hello,World!");staticActionstringGetOutputRoutine(){returnMyConsoleWriter;}staticvoidMyConsoleWriter(stringinput){("Console:{0}",input);}
所以,这是一堂很好的课,但我为什么要提到这些呢?虽然我发现在编写代码时像传递参数一样传递方法很方便,但我也希望在调试时更容易跟踪。当然,您可以轻松地单步执行这些方法,但我通常希望在单步执行之前或之后快速导航到由委托表示的底层代码,随着的最新更新,这非常容易。
当您在调试时暂停时,您可以将鼠标悬停在任何委托上并获得一个方便的跳转,这里是一个带有Func委托的示例。
在本例中,GotoSource清楚地表明,您将被重定向回lambda表达式。
请注意,这不仅仅适用于托管代码的情况,它还支持C++函数指针和std::function。
请在Twitter上与VisualStudioDebugger团队保持联系。
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。