Umfassendes Verständnis von C#-Abschlüssen
Abschlüsse in C# sind eine leistungsstarke Funktion, die es verschachtelten Funktionen ermöglicht, auf Variablen in ihrem umschließenden Bereich zuzugreifen. Abschlüsse sind die Grundlage für .NET-Inline-Delegates und anonyme Methoden und ermöglichen es anonymen Funktionen, Variablen aus der übergeordneten Methode beizubehalten.
C#-Abschlüsse erscheinen normalerweise in Form von Inline-Delegierten oder anonymen Methoden. Wenn diese anonyme Funktion innerhalb einer übergeordneten Methode definiert wird, kann sie auf Variablen zugreifen, die im Hauptteil ihrer übergeordneten Methode deklariert sind.
Antrag auf Schließung
Das folgende Beispiel zeigt, wie die Methode FindById
Abschlüsse verwendet, um Person
-Objekte anhand ihrer ID zu finden:
<code class="language-csharp">public Person FindById(int id) { return this.Find(delegate(Person p) { return (p.Id == id); }); }</code>
Die anonyme Funktion fungiert hier als Prädikat, das das Person
-Objekt auswertet, um festzustellen, ob seine ID mit dem bereitgestellten id
-Parameter übereinstimmt.
Lambda-Ausdruck
In C# 6 und höher bieten Lambda-Ausdrücke eine prägnantere Syntax zum Definieren von Abschlüssen:
<code class="language-csharp">public Person FindById(int id) { return this.Find(p => p.Id == id); }</code>
Dieser Lambda-Ausdruck entspricht dem oben genannten anonymen Delegaten und ist auch ein Abschluss.
Zusammenfassung
Abschlüsse in C# sind ein leistungsstarker Mechanismus, der es verschachtelten Funktionen ermöglicht, auf Variablen in einem umschließenden Bereich zuzugreifen. Durch die Nutzung dieser Korrelation zwischen übergeordneten und untergeordneten Funktionen können wir durch Abschlüsse Anwendungen erstellen, die flexibler und einfacher zu warten sind. Unabhängig davon, ob Sie traditionelle anonyme Methoden oder moderne Lambda-Ausdrücke wählen, können Abschlüsse Ihre C#-Programmierkenntnisse verbessern.
Das obige ist der detaillierte Inhalt vonWie ermöglichen C#-Abschlüsse den Zugriff auf Variablen aus umschließenden Bereichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!