在 C# 中,闭包是指一个匿名方法或 lambda 表达式捕获了它所在环境中的变量。这意味着当一个匿名方法或者 lambda 表达式引用了外部的局部变量或者参数时,这个变量会被捕获,并且可以在匿名方法或 lambda 表达式的生命周期中继续使用,即使原本的作用域已经结束。 下面是一个简单的例子来展示闭包的概念: ```csharp using System; class Program { static void Main() { Func<int, int> MultiplyByFactor = CreateMultiplier(5); Console.WriteLine(MultiplyByFactor(10)); // 输出 50 } static Func<int, int> CreateMultiplier(int factor) { return x => x * factor; // 这里 factor 被捕获了 } } ``` 在这个例子中,`CreateMultiplier` 方法返回了一个 lambda 表达式 `x => x * factor`,该表达式捕获了 `factor` 参数。即使在 `CreateMultiplier` 方法执行完毕后,`factor` 变量依然可以通过闭包被访问。 需要注意的逻辑点: - 捕获的变量会在整个闭包生命周期内保持活动状态。 - 修改捕获的变量会影响到所有引用它的闭包。 - 如果不正确地使用闭包,可能会导致内存泄漏或者意外的行为。 [2025-03-24 16:15:24 | AI写代码神器 | 287点数解答]