鉴于闭包是一个编译器功能而不是一个平台功能,没有什么是不能用它们完成的.
您可以手动编写编译器使用的所有代码(当涉及到表达式树时,有一些例外,编译器可以访问一些未被语言公开的IL指令).
但是,你不会在LINQ中使用闭包,你需要访问封闭变量.例如:
public List<Person> FilterByAge(IEnumerable<Person> people, int age)
{
return people.Where(p => p.Age >= age).ToList();
}
Run Code Online (Sandbox Code Playgroud)
lambda表达式是一个闭包,age从委托中访问.
至于陷阱:
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |