微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决.NET 中的“闭包”是什么?

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

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

闭包的一般特性是在 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 中,您能否提供一个代码片段(最好是 C#)来解释它?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。