闭包是一个外部函数 O,它的主体中有一个变量 x 和一个内部函数 F。F 必须访问 x。O 必须返回 F,即 F 本身(或其指针),而不是 F 的返回值。这样由于 F 可以从 O 外部的代码中调用,并且 F 需要执行 x,x 必须保持在作用域之后O出口。
在 javascript 中,我们可以在函数中定义函数,所以它很简单。在 C# 中,我们必须使用匿名方法或匿名委托才能具有与内部函数相同的行为。
闭包的本质是在函数退出后保留函数局部变量的值,以便下次调用函数时,先前的值已经存在。上面提到的语法和技术是完成闭包的方法。
无论如何,在不使用内部函数或委托的情况下,是否有任何语言(汇编语言除外)具有闭包的本质。当然,OOP 中的类中的字段具有相同的效果,但我正在寻找除此之外的方法。