捕获变量的语义

时间:2014-02-11 17:52:56

标签: lambda closures

在以下两种情况下,有人可以解释捕获变量的语义

(1)一个匿名方法(一个lambda表达式),它只捕获实例和静态(类)字段(但不捕获局部变量或参数),并且

(2)一个匿名方法,它捕获局部变量和参数,以及可能的实例和静态字段。

此外,闭包和捕获变量之间的关系是什么?

1 个答案:

答案 0 :(得分:1)

闭包是一个对象(通常),它包含lambda使用的所有捕获变量。

如果lambda使用实例字段,它实际上是隐式捕获this实例,然后访问其成员。

如果它只使用静态字段,则它根本没有闭包;可以在没有上下文的情况下访问静态字段。