什么是封包?我们在.NET中有它们吗?
如果它们确实存在于.NET中,您能否提供一个解释它的代码段(最好是C#)?
最佳答案
我有an article on this very topic。 (它有很多示例。)
本质上,闭包是一个代码块,可以在以后的时间执行,但可以维护首次创建闭包的环境-即闭包仍然可以使用创建它的方法的局部变量等。方法已完成执行。
闭包的一般功能是通过C#中的匿名方法和lambda表达式实现的。
这是使用匿名方法的示例:
using System;
class Test
{
static void Main()
{
Action action = CreateAction();
action();
action();
}
static Action CreateAction()
{
int counter = 0;
return delegate
{
// Yes, it could be done in one statement;
// but it is clearer like this.
counter++;
Console.WriteLine("counter={0}", counter);
};
}
}
输出:
counter=1
counter=2
在这里我们可以看到,即使CreateAction本身已经完成,CreateAction返回的操作仍然可以访问计数器变量,并且确实可以对其进行递增。
关于.net - .NET中的 'closures'是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/428617/