如何解决.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 举报,一经查实,本站将立刻删除。