gpt4 book ai didi

.net - .NET 中的 'closures' 是什么?

转载 作者:行者123 更新时间:2023-12-03 04:12:04 26 4
gpt4 key购买 nike

什么是闭包?我们在 .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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com