如何查看c#编译器输出的语法糖

Mat*_*ips 5 c# visualization

我正在寻找是否有一种方法或工具可以查看 c# 编译器“在幕后”如何创建闭包或查询表达式之类的东西。我注意到许多处理这些问题的博客文章都包含带有语法糖的原始代码和编译器将其转换为的底层 c# 代码。因此,例如使用 linq 和查询表达式,它们将显示:

var query = from x in myList select x.ToString();
Run Code Online (Sandbox Code Playgroud)

那么结果代码将是

var query = myList.Select(x=>x.ToString());
Run Code Online (Sandbox Code Playgroud)

是否可以使用工具,或者您是否只需要从规范中了解它的工作原理并从那里开始?

Aks*_*hot 5

SharpLab.io就是您正在寻找的工具。

SharpLab在该网站上显示了代码编译的中间步骤和结果。它允许您以编译器所看到的方式查看代码,并更好地理解 .NET 语言。


Rob*_*sen 3

我不是 Resharper 的用户,但我确信它会起作用。您似乎已经知道 Linq 语法查询的替代形式。我想这就是答案;知道你在做什么。仔细阅读一下。如果你不知道,你就是危险的,你将无法接近我的代码库。:)

说真的,这只需最少的阅读,就能为您提供 C# 的强大功能。如果您对自己的工作感兴趣,您就会知道这一点。