Heim > Backend-Entwicklung > C++ > Wie greifen C#-Abschlüsse über ihre übergeordneten Methoden auf Variablen zu?

Wie greifen C#-Abschlüsse über ihre übergeordneten Methoden auf Variablen zu?

DDD
Freigeben: 2025-01-08 08:16:41
Original
709 Leute haben es durchsucht

How Do C# Closures Access Variables from Their Parent Methods?

Erkunden von C#-Abschlüssen: Zugriff auf Variablen über einschließende Methoden

In der Programmierung bezieht sich ein „Abschluss“ auf eine Funktion, die den Zugriff auf Variablen aus ihrem umgebenden Bereich behält, selbst nachdem die Ausführung der umgebenden Funktion abgeschlossen ist. In C# wird dies häufig mithilfe anonymer Methoden oder Lambda-Ausdrücken implementiert. Das Hauptmerkmal ist die Fähigkeit des Abschlusses, sich Variablen aus seiner übergeordneten Methode zu „merken“.

Anschauliches C#-Beispiel:

Bedenken Sie dieses Code-Snippet:

<code class="language-csharp">public Person FindById(int id)
{
    return this.Find(delegate(Person p)
    {
        return (p.Id == id);
    });
}</code>
Nach dem Login kopieren

Hier greift der anonyme Delegat in FindById auf die id-Variable zu, die in der FindById-Methode deklariert wurde. Dies zeigt die Fähigkeit des Abschlusses, den Zugriff auf Variablen aus seinem umschließenden Bereich zu erfassen und aufrechtzuerhalten.

Weiteres Lernen:

Für einen tieferen Einblick in Schließungen konsultieren Sie Ressourcen wie die Schriften von Martin Fowler und Jon Skeet zu diesem Thema. Sie bieten ausführliche Erklärungen und Beispiele.

Nutzung der C# 6-Syntax:

C# 6 führte eine prägnantere Syntax für Abschlüsse mithilfe von Lambda-Ausdrücken ein:

<code class="language-csharp">public Person FindById(int id)
{
    return this.Find(p => p.Id == id);
}</code>
Nach dem Login kopieren

Dieser Lambda-Ausdruck erreicht die gleiche Funktionalität wie der anonyme Delegat im vorherigen Beispiel, jedoch mit verbesserter Lesbarkeit.

Äquivalente prägnante Syntax:

Das obige Beispiel kann mit dem Pfeilausdruck weiter vereinfacht werden:

<code class="language-csharp">public Person FindById(int id) => this.Find(p => p.Id == id);</code>
Nach dem Login kopieren

Dies zeigt eine kompaktere Möglichkeit, den Abschluss in C# zu definieren.

Das obige ist der detaillierte Inhalt vonWie greifen C#-Abschlüsse über ihre übergeordneten Methoden auf Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage