匿名方法是内联定义的吗?在下面的示例中,委托对象“d”引用了一个匿名方法,该方法正在访问 Fun 方法中定义的“x”变量。"x" 的范围应该限制在 Fun 方法中,但是当我们调用 MyFun 时,它会调用作为参数传递的委托并递增 "x" 的值。
输出结果是“6”,这是怎么发生的?“x”的值,或者首先是“x”变量本身如何在匿名方法中可用?
public delegate void Del();
public void Fun()
{
int x = 5;
Del d = delegate { x++; };
MyFun(d);
Console.WriteLine(x);
}
public static void MyFun(Del d)
{
d();
}