Warum können Sie nicht das Debuggen bearbeiten und weiter, wenn es ein Lambda-Ausdruck in dem Verfahren?

StackOverflow https://stackoverflow.com/questions/1300133

Frage

Ich habe es gesagt gesehen in anderen Fragen, die die Linq Abfragesyntax zu einem Lambda kompiliert wird.

Also, warum können Sie nicht tun, bearbeiten und fortsetzt, wenn es ein Lambda-Ausdruck in dem Verfahren ist, während bei Abfrage Schreibweise Sie kann?

Was ist am meisten ärgerlich und wird ernst macht mich zu verwenden Abfrage Notation überall Schale betrachte, ist, dass selbst wenn der Code nicht in dem Lambda ist, aber es gibt eine Lambda woanders in der gleichen Methode, Sie können nicht bearbeiten-und-weiter! Das ist, wie, unentgeltlicher Schmerz zufügte unvorsichtige Entwickler!

War es hilfreich?

Lösung

Bearbeiten und weiterhin in der Lage, Methodenimplementierungen „live“ zu ändern, aber nicht das, was Felder sind in Typen.

Lambda-Ausdrücke (und anonyme Methoden) können ihre eigenen privaten Typen am Ende zu schaffen, wenn sie Variablen erfassen. den Lambda-Ausdruck ändern kann die Art ändern beteiligt, die bearbeiten brechen würde und weiter.

Es klingt wie es sollte möglich sein, den Code, um Änderungen an, die nicht diese Auswirkungen haben, aber ich vermute, es ist einfach leichter ist es zu verhindern, ganz - was auch bedeutet, dass Sie dies nicht tun < em> Start Änderungen vornehmen und dann feststellen, dass Sie auf halbem Weg durch Ihre Änderung verhindert sind.

(Ich bin kein Fan von E & C persönlich an erster Stelle, also habe ich es nie bemerkt.)

Andere Tipps

Ich weiß nicht sicher, aber meine Vermutung ist, die Komplexität um herauszufinden, was sich ändern muss, wenn es beteiligten lokalen Variablen, die Klassen aufgehoben werden. Ich vermute, dass herauszufinden, was wäre ändert sicher und was war komplex und fehleranfällig zu bekommen Recht an dieser Stelle nicht, gilt. Die Werkzeuge im Jahr 2010 konzentrierte sich um Threading und die neue UI -. Vielleicht werden wir es in der nächsten Version bekommen

Ich weiß es nicht genau, aber ich nehme an, es mit der Art und Weise zu tun hat, die Compiler Lambda-Ausdrücke Schließungen in Compiler generierten Klassen konvertiert bilden. Wahrscheinlich gibt es keine (leicht) Art und Weise Änderungen an den kompilierten Code zu beantragen und den aktuellen Zustand zu bewahren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top