以下面的 C# 函数为例:
static void Main(string[] args)
{
var r = new Random();
{
var i = r.Next(); ;
Console.WriteLine("i = {0}", i);
}
var action = new Action(delegate()
{
var i = r.Next();
Console.WriteLine("Delegate: i = {0}", i);
});
action();
}
以下块仅作为 C# 语法糖存在,以在源代码中实施额外的变量范围层,如本 SO Question 中所述。
{
var i = r.Next(); ;
Console.WriteLine("i = {0}", i);
}
我通过使用 ILSpy 反编译生成的程序集并得到以下结果证明了这一点:
private static void Main(string[] args)
{
Random r = new Random();
int i = r.Next();
Console.WriteLine("i = {0}", i);
Action action = delegate
{
int j = r.Next();
Console.WriteLine("Delegate: i = {0}", j);
}
;
action();
}
那么这个 C# 构造有名称吗?如果是这样,那是什么?