3 Stimmen

Was ist die maximale LINQ Expression Trees tun können?

Was kann der LINQ-Ausdruck Tree maximal leisten?

Kann sie eine Klasse definieren? Wie sieht es mit einer Methode aus, mit allen deklarierten Namen, Modifikatoren, Parametertyp und Rückgabetyp?

Muss das Programm den Baum immer selbst definieren? Ist es möglich, den Baum aus einer gegebenen C#-Datei zu generieren?

15voto

Eric Lippert Punkte 628543

In C# 3 können Ausdrucksbäume Folgendes darstellen Ausdrücke . Daher auch der Name. Außerdem sind sie auf eine Teilmenge von C#-Ausdrücken beschränkt - keine Zuweisungsausdrücke, keine Ausdrücke, die Zeigertypen beinhalten, und so weiter.

In den Bibliotheken, die mit C# 4 ausgeliefert werden, haben wir den Ausdrucksbaum erweitert Bibliothek um auch Erklärungsbäume zu unterstützen. Allerdings wird C# 4 ein Anweisungs-Lambda NICHT automatisch in einen "Anweisungsbaum" übersetzen.

Das ist eine offensichtliche und nützliche Funktion, für die wir bei C# 4 einfach keine Zeit hatten. Wir werden sie für hypothetische zukünftige Versionen in Betracht ziehen. Wenn Sie ein wirklich tolles Benutzerszenario für Anweisungsbäume haben, würde ich es gerne hören.

Die offensichtliche Erweiterung zu all dem sind Deklarationsbäume, die Klassendeklarationen, Strukturdeklarationen usw. darstellen würden. Mit totale Homoikonizität zwischen der Sprache C# und der Expression Tree Library wäre großartig. Es würde alle Arten von interessanten Metaprogrammierungsszenarien ermöglichen. Aber das wird in nächster Zeit nicht passieren, also machen Sie sich keine Hoffnungen. Das ist eher ein langfristiger Traum von mir, der vielleicht nie Wirklichkeit wird.

1voto

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X