猿问

.NET中的“闭包”是什么?

.NET中的“闭包”是什么?

什么是封闭?我们在.NET中有它们吗?


如果它们确实存在于.NET中,那么请提供一个代码片段(最好是在C#中)来解释它吗?


编辑:我经历了乔恩·斯基特的文章了解什么是闭包以及如何在.NET中使用它们。


holdtom
浏览 537回答 3
3回答

海绵宝宝撒

我有过一篇关于这个主题的文章..(它有很多例子。)从本质上说,闭包是一个代码块,可以在以后执行,但它维护最初创建它的环境-也就是说,即使在该方法完成执行之后,它仍然可以使用创建它的方法的局部变量等。闭包的一般特性是通过匿名方法和lambda表达式在C#中实现的。下面是一个使用匿名方法的示例: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本身已经完成。
随时随地看视频慕课网APP
我要回答