我念叨lambda表達式,我已經看到了這個例子,lambda表達式如何共享局部變量?
例1:
static Func<int> Natural()
{
int seed = 0;
return() => seed++; // Returns a closure
}
static void Main()
{
Func<int> natural = Natural();
Console.WriteLine (natural()); // output : 0
Console.WriteLine (natural()); // output : 1
}
例2:
static Func<int> Natural()
{
return() => { int seed = 0; return seed++; };
}
static void Main()
{
Func<int> natural = Natural();
Console.WriteLine (natural()); // output : 0
Console.WriteLine (natural()); // output : 0
}
我無法理解爲什麼第一個例子輸出爲0和1.
第二個e xample在匿名函數的作用域中包含'seed'變量(因此每次運行時都將其設置爲0)。第一個版本的seed變量聲明在該範圍之外。 – Mike