为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2019-06-10 21:00:00
.NET中的“闭包”是什么?什么是封闭?我们在.NET中有它们吗?如果它们确实存在于.NET中,那么请提供一个代码片段(最好是在C#中)来解释它吗?编辑:我经历了乔恩·斯基特的文章了解什么是闭包以及如何在.NET中使用它们。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

我有过一篇关于这个主题的文章..(它有很多例子。)

从本质上说,闭包是一个代码块,可以在以后执行,但它维护最初创建它的环境-也就是说,即使在该方法完成执行之后,它仍然可以使用创建它的方法的局部变量等。

闭包的一般特性是通过匿名方法和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本身已经完成。


查看完整回答
反对 回复 2019-06-10
  • 3 回答
  • 0 关注
  • 536 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信