Delegiertes Schlüsselwort vs. Lambda-Notation
In C# stellt sich häufig die Frage nach der Äquivalenz zweier Lambda-Ausdrücke:
<code class="csharp">delegate { x = 0; } () = > { x = 0 }</code>
Sind sie nach der Kompilierung funktional identisch?
Antwort:
Kurz gesagt, nein. Sie sind syntaktisch gleichwertig, unterscheiden sich jedoch im resultierenden Delegatentyp.
Tiefertauchen:
Während das Schlüsselwort „delegate“ traditionell anonyme Delegaten erstellt, führt die Verwendung eines Lambda mit dem Schlüsselwort „delegate“ zu einem auch anonymer Delegierter. Durch die Zuweisung eines Lambda zu einem Ausdruckstyp wird jedoch stattdessen ein Ausdrucksbaum erstellt, der anschließend zu einem anonymen Delegaten kompiliert werden kann.
Erweiterte Überlegungen:
Die Wahl zwischen diesen Notationen hängt von ab die beabsichtigte Verwendung:
Das obige ist der detaillierte Inhalt vonSind Delegatenschlüsselwörter und Lambda-Notation in C# funktional identisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!