【发布时间】:2016-03-14 05:36:19
【问题描述】:
我如何才能看到 C#“语法糖”在幕后的真正作用? 比如我知道C#lock语句被预编译为:
var temp = obj;
Monitor.Enter(temp);
try
{
// body
}
finally
{
Monitor.Exit(temp);
}
而且我知道,如果您直接在类内部(而不是在构造函数中)声明和初始化实例字段,那么在类中声明这些字段并在构造函数中初始化它们就是语法糖。
我的问题是,如果我要使用这些语法糖来编写代码,我如何才能看到生成的 C# 代码是什么?
是否有一个“预编译”过程,首先将这些语法糖转换为更复杂的 C# 代码,然后将其编译成 CIL?
【问题讨论】:
-
这实际上并不是现在 lock 语句生成的。见ericlippert.com/2009/03/06/locks-and-exceptions-do-not-mix
标签: c#