Почему вы не можете редактировать и продолжать отладку, если в методе есть лямбда-выражение?

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

Вопрос

В других вопросах я видел, что синтаксис запроса Linq компилируется в Lambda.

Так почему же вы не можете выполнить операцию «редактировать и продолжить», если в методе есть лямбда-выражение, а с нотацией запроса — можно?

Что больше всего бесит и серьезно заставляет меня задуматься о переходе на использование нотации запросов. повсюду, заключается в том, что даже если вашего кода нет в Lambda, но где-то еще в том же методе есть Lambda, вы не можете редактировать и продолжать!Это типа неоправданная боль, причиненная неосторожным разработчикам!

Это было полезно?

Решение

Редактировать и продолжить позволяет изменять реализации методов «вживую», но не то, какие поля находятся в типах.

Лямбда-выражения (и анонимные методы) могут в конечном итоге создавать свои собственные частные типы при захвате переменных.Изменение лямбда-выражения может изменить задействованные типы, что приведет к прерыванию редактирования и продолжению.

Это звучит так должен можно внести изменения в код, которые не оказывают такого влияния, но я подозреваю, что проще полностью предотвратить это - что также означает, что вы не делаете этого. начинать внесение изменений, а затем обнаруживаете, что вы не можете внести изменения на полпути.

(Лично я вообще не фанат E&C, поэтому никогда этого не замечал.)

Другие советы

Я не знаю наверняка, но я предполагаю, что сложность заключается в выяснении того, что нужно изменить, когда задействованы локальные переменные, которые переносятся в классы.Я предполагаю, что на данном этапе выяснение того, какие изменения будут безопасными, а какие нет, считалось сложным и подверженным ошибкам.Инструментарий 2010 года был сосредоточен на многопоточности и новом пользовательском интерфейсе — возможно, мы получим его в следующей версии.

Я не знаю этого наверняка, но предполагаю, что это связано с тем, как компилятор преобразует лямбда-выражения, образующие замыкания, в генерируемые компилятором классы.Вероятно, не существует (простого) способа применить изменения, внесенные в скомпилированный код, и сохранить текущее состояние.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top