【发布时间】:2011-02-01 11:38:03
【问题描述】:
我正在学习 C#。我的意思是 a construct that can adopt the changes in the environment in which it is defined. 的闭包
例子:
List<Person> gurus =
new List<Person>()
{
new Person{id=1,Name="Jon Skeet"},
new Person{id=2,Name="Marc Gravell"},
new Person{id=3,Name="Lasse"}
};
void FindPersonByID(int id)
{
gurus.FindAll(delegate(Person x) { return x.id == id; });
}
变量id 声明在 FindPersonByID() 的范围内,但我们仍然可以访问
匿名函数内的局部变量id(即)delegate(Person x) { return x.id == id; }
(1) 我对闭包的理解是否正确?
(2) 我们可以从闭包中获得哪些优势?
【问题讨论】:
-
JaredPar 的回答非常好。有关闭包背后驱动的逻辑的更多信息,请在此处查看我的答案stackoverflow.com/a/50835666/6296435
标签: c# linq closures anonymous-methods