什麼區別lambda表達式在C#中捕獲外層變量 - 請 「在C#簡而言之5.0」,從書中解釋例如
爲什麼static void Main()
{
Func<int> natural = Natural();
Console.WriteLine (natural());
Console.WriteLine (natural());
}
之間
static Func<int> Natural()
{
int seed = 0;
return() => seed++; // Returns a closure
}
和
static Func<int> Natural()
{
return() => { int seed = 0; return seed++; };
}
顯示0 1對於第一個Natural()和0 0對於第二個?謝謝!
我想你也爲irrated爲什麼第二個返回0而不是1,那是因爲你寫了seed ++這應該改成++ seed。 –
在第一個例子中,'seed'在返回的函數之外,在第二個函數中它在函數 –