2010-09-30 48 views
1

請考慮以下(C#)代碼。被傳遞給ConvolutedRand()的lambda被稱爲「關閉」了名爲format的變量。用什麼術語來描述在MyMethod()中如何使用變量random?「封閉」這個詞的相反之處是什麼?

void MyMethod 
{ 
    int random; 
    string format = "The number {0} inside the lambda scope"; 

    ConvolutedRand(x => 
    { 
     Console.WriteLine(format, x); 
     random = x; 
    }); 

    Console.WriteLine("The number is {0} outside the lambda scope", random); 
} 

void ConvolutedRand(Action<int> action) 
{ 
    int random = new Random.Next(); 
    action(random); 
} 

回答

3

我通常聽到「綁定」與「自由」,在一個特定的表達或詞法範圍的上下文。 lambda關閉formatrandom(在lambda中是「自由的」,這就是爲什麼它關閉它們)。在MyMethod裏面,兩個變量都是局部綁定的變量。

1

這將是一個局部變量國際海事組織。 (也許有一個更科學的名字,not free也許?)

+2

我可以告訴你有資格根據你的用戶圖標來回答這個問題。 – anthony 2010-09-30 07:34:11

相關問題