我曾在C#中玩过闭包,甚至在产品规范应用程序中编写过闭包,但是,没有什么能真正对我大喊大叫,说这个问题必须或者只能通过使用闭包来解决。
是否存在闭包对解决问题特别有用的问题?另外,在C# 4.0中是否有闭包?
谢谢
发布于 2010-12-07 21:56:53
考虑到闭包是一个编译器特性而不是一个平台特性,所以没有什么是不能用它们完成的。
您可以手工编写编译器使用的所有代码(在涉及表达式树时,除了少数例外,编译器可以访问一些未被该语言公开的IL指令)。
但是,如果在LINQ中不使用闭包,您会非常生气,因为在LINQ中,您需要访问封闭变量。例如:
public List<Person> FilterByAge(IEnumerable<Person> people, int age)
{
return people.Where(p => p.Age >= age).ToList();
}该lambda表达式是一个闭包,从委托中访问age。
至于问题:
https://stackoverflow.com/questions/4381983
复制相似问题