何时使用闭包的场景

时间:2010-12-07 21:51:29

标签: c# closures

我在C#中使用了一些闭包,甚至用生产规范的应用程序编写了它们,然而,没有什么能真正地喊我这个问题必须,或者只能 ,使用闭包解决。

闭包对解决问题特别有用吗?另外,C#4.0中是否有关闭的问题?

由于

1 个答案:

答案 0 :(得分:6)

鉴于闭包是一个编译器功能而不是平台功能,无法完成任何操作。

您可以编写编译器手动使用的所有代码(当涉及表达式树时,有一些例外,编译器可以访问一些未被语言公开的IL指令)。

但是,你很难 在LINQ中使用闭包,你需要访问封闭变量。例如:

public List<Person> FilterByAge(IEnumerable<Person> people, int age)
{
    return people.Where(p => p.Age >= age).ToList();
}

该lambda表达式是一个闭包,从委托中访问age

至于陷阱: