如果我將以下代碼看作Javascript代碼,那麼它會有意義......但是,它如何在Main中的call action()不爲我產生一個NullReferenceException? Action是否抓取了像JavaScript一樣的東西?感謝所有人。C#中是否存在「Javascript上下文」這樣的事情?
public class Program
{
static void Main(string[] args)
{
var p = new Program();
var action = p.method();
action();
Console.ReadKey();
}
public Action method()
{
var i = 6;
Action action =() => Console.WriteLine(i);
i++;
return action;
}
}
OUTPUT >> 7
您正在尋找的詞是'閉包',而不是上下文。如果您搜索「C#closure」,那麼關於該主題的信息有相當多的信息,但實質上,'i'從'method'中提取到其閉包中,這允許它在離開「method」的範圍後保留。 – Rob