以下面的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();
}
Run Code Online (Sandbox Code Playgroud)
以下块仅作为C#语法糖存在,以在源代码中强制执行额外的变量范围层,如本SO问题中所述.
{
var i = r.Next(); ;
Console.WriteLine("i = {0}", i);
}
Run Code Online (Sandbox Code Playgroud)
我通过使用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();
}
Run Code Online (Sandbox Code Playgroud)
那么这个C#构造有一个名字吗?如果是这样的话是什么?
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |