在"捕获变量"中,变量是如何被捕获的?
实际上,“捕获”一词代表什么意思?
这是否意味着在不涉及装箱的情况下引用值类型?
谢谢
实际上,“捕获”一词代表什么意思?
这是否意味着在不涉及装箱的情况下引用值类型?
谢谢
捕获变量通常指使用闭包(基本上是一个内联函数)捕获的变量。 "捕获" 意味着内联函数必须在外部函数中“捕获”对变量的引用。为此,C#编译器会生成一个内部类,并将外部变量按引用传递到内部类中(随后内联函数引用该变量)。如果您反汇编代码,您可以看到这一点。
考虑以下内容
void Main()
{
string s = "hello";
Action a = delegate
{
Debug.WriteLine(s);
};
s = "hello2";
a();
}