【译】在调试时轻松导航代码委托

· 浏览次数 : 11

小编点评

本文介绍了委托的概念及其在现代代码中的广泛应用。委托是一种表示具有特定参数列表和返回类型的方法的引用,可以将其作为参数传递给其他方法。文章给出了一个示例,其中使用了Func委托来计算数字的5倍。此外,还介绍了Action委托,它提供了一种更方便的简写形式。在调试代码时,作者提到了如何利用委托在调试器中快速导航到底层代码。最后,作者鼓励读者通过开发者社区与Visual Studio Debugger团队分享反馈,以推动新功能或现有功能的改进。 1. 委托是一种表示具有特定参数列表和返回类型的方法的引用。 2. 委托可以用作其他方法的参数,例如事件处理程序。 3. Func委托表示接受一个或多个参数并返回指定类型值的方法。 4. 使用Action委托时,不需要显式地定义一个用单个参数封装方法的委托。 5. 在调试代码时,作者提到了如何利用委托在调试器中快速导航到底层代码。 6. 作者鼓励读者通过开发者社区与Visual Studio Debugger团队分享反馈,以推动新功能或现有功能的改进。

正文

  委托在现代代码中无处不在;委托是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。开发人员使用委托将方法作为参数传递给其他方法。您可能熟悉的一个例子是事件处理程序。处理程序是可以通过委托调用的方法。委托让我想起 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/

 

与【译】在调试时轻松导航代码委托相似的内容:

【译】在调试时轻松导航代码委托

我通常希望在单步执行之前或之后快速导航到由委托表示的底层代码,随着 Visual Studio 17.10 的最新更新,这非常容易。

【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展

VisualStudio. Extensibility 帮助您构建在主 IDE 进程之外运行的扩展,以提高性能和可靠性。它还提供了一个时尚而直观的基于 .NET 8 的 API 和全面且维护良好的文档,可以帮助您开发出色的扩展。

[译]这几个CSS小技巧,你知道吗?

# 前言 在网页设计和前端开发中,CSS属性是非常重要的一部分。掌握常用的CSS属性不仅可以使你的网页看起来更美观,还能提升用户体验,今天小编为大家介绍8个常见的CSS小技巧: # 1.修改滚动条样式 下图是我们常见的滚动条,现在需要改变滚动条的宽度和颜色了,并把它画的圆一点。 ![](https:

Booking.com如何在毫秒内搜索数百万个地点

译自:How Booking.com Searches Through Millions of Locations in Milliseconds Booking.com是一家与酒店、旅馆、度假租赁等相关的在线旅行社。每个月都有数亿用户通过访问该网站来寻找合适的度假住宿。Booking的一个主要特性

【译】使用 GitHub Copilot 作为你的编码 GPS

GitHub Copilot 是一个改变游戏规则的人工智能助手,可以彻底改变您在 Visual Studio 中的编码流程。在我们的视频系列中,Bruno Capuano 探讨了这个智能编码伙伴如何帮助您更有效地编写代码,同时保持质量和准确性。 Copilot:是助手,而不是替代品 Bruno 强调

【译】使用 .NET Aspire 和 Visual Studio 开发云原生应用

我们很高兴地宣布 .NET Aspire 发布,它扩展了 Visual Studio 在云原生应用程序开发方面的能力。.NET Aspire 提供了一个框架和工具,以一种独特的方式,使分布式 .NET 应用程序更容易构建、部署和管理。这种集成旨在使云原生应用程序的开发更加简单和高效。

【译】Visual Studio 2022 - 17.10 性能增强

我们很高兴地宣布 Visual Studio 2022 的最新更新,它为您带来了 IDE 各个领域的一系列性能增强。在这篇博客中,我们将重点介绍17.10版本中一些最显著的改进,比如更快的 Windows Forms 设计器加载、更快的 Razor 着色、更快的解决方案加载以及更少的 dll 开销。

【译】通过出色的开发人员体验,将乐趣最大化,将痛苦最小化

有一条通往开发者幸福的道路——开发者可以更多地专注于编码,而不是运维;在那里他们可以以创造力的速度进行创新;他们可以快速发展,而不必担心管理他们的应用程序所依赖的基础设施。

【译】Visual Studio Enterprise 中的代码覆盖率特性

通过使用代码覆盖率功能,您可以发现您的测试需要改进的地方,并使您的软件更加健壮和可靠。在这篇文章中,我们将介绍我们在 Visual Studio Enterprise 2022 中引入的 Code Coverage Results 窗口的新特性。

[转帖]RFC1180

[译] RFC 1180:朴素 TCP/IP 教程(1991) 译者序 本文翻译自 1991 年的一份 RFC(1180): A TCP/IP Tutorial。 本文虽距今将近 20 年,但内容并未过时,这不禁让人惊叹于 TCP/IP 协议栈生命力之强大 。要理解 1991 年在技术发展中处于什么