下面的代码可以工作,但为什么?当我在循环中调用匿名方法时,x 和 y 在哪里来/保存。
谢谢
static void Main(string[] args)
{
int x=1;
int y=2;
var dic = GetDic(x, y);
for (int i = 0; i < 5;i++ )
{
System.Console.WriteLine(dic[i].Invoke().ToString());
}
}
private static Dictionary<int, Func<int>> GetDic(int x, int y)
{
var dic = new Dictionary<int, Func<int>>()
{
{0,()=>{return y;}},
{1,()=>{return x;}},
{2,()=>{return x+y;}},
{3,()=>{return x-y;}},
{4,()=>{return y-x;}},
};
return dic;
}