Ich habe angefangen, anonyme Delegierte viel in C # zu verwenden, und ich habe mich gefragt, wie effizient der Compiler oder die Laufzeit sie aus dem Code entfernt, der tatsächlich ausgeführt wird, und ich habe das nirgendwo detaillierter gesehen?
>Ist es überhaupt schlau genug, sie zu inline einzubinden und rekursive Verwendungen, die statisch abgeleitet werden könnten, zu reduzieren?
Nein, der C # -Compiler optimiert einen Lambda-Ausdruck nicht in Inline-Code. Anonyme Delegaten und Lambda-Ausdrücke erzeugen immer einen entsprechenden Delegaten oder einen Ausdrucksbaum. Dies wird in Abschnitt 6.5 der C # -Sprachspezifikation behandelt.
Ein anonymer Methodenausdruck oder Lambda-Ausdruck wird als anonyme Funktion klassifiziert (§7.14). Der Ausdruck hat keinen Typ, kann aber implizit in einen kompatiblen Delegattyp oder Ausdrucksbaumentyp konvertiert werden.
In bestimmten Fällen wird das Lambda zwischengespeichert und nicht für zukünftige Verwendung wiederhergestellt. Aber es wird nicht inline sein.
Tags und Links optimization c# jit anonymous delegates