C # -Closure -Clarification
Ich lerne C # .Can ich meine Schließung alsa construct that can adopt the changes in the environment in which it is defined.
Beispiel:
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; });
}
Die Variableid
wird im Gültigkeitsbereich von FindPersonByID () deklariert, wir können jedoch weiterhin auf die lokale Variable zugreifenid
innerhalb der anonymen Funktion (d. h.)delegate(Person x) { return x.id == id; }
(1) Ist mein Verständnis des Abschlusses korrekt?
(2) Was sind die Vorteile von Verschlüssen?