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

如果它们确实存在于.NET中,您能否提供一个解释它的代码段(最好是C#)?

最佳答案

我有an article on this very topic。 (它有很多示例。)

本质上,闭包是一个代码块,可以在以后的时间执行,但可以维护首次创建闭包的环境-即闭包仍然可以使用创建它的方法的局部变量等。方法已完成执行。

闭包的一般功能是通过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中的 'closures'是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/428617/

10-12 07:33
查看更多