Почему вы не можете редактировать и продолжать отладку, когда в методе есть выражение Lambda?
Я видел, как он сказал в других вопросах, что синтаксис запроса Linq компилируется в Lambda.
Итак, почему вы не можете редактировать и продолжать, когда в методе есть выражение Lambda, а с помощью нотации запроса вы можете?
Что больше всего бесит, и серьезно заставляет меня подумать о переходе на использование нотации запроса везде, так это то, что даже если ваш код не находится в лямбда, но там есть Lambda где-то еще в том же методе, вы не можете редактировать и продолжать! Вот, например, безвозмездная боль, нанесенная неосторожным разработчикам!
Ответы
Ответ 1
Редактировать и продолжить может изменять реализации метода "вживую", но не в каких полях в типах.
Лямбда-выражения (и анонимные методы) могут создавать собственные частные типы при захвате переменных. Изменение лямбда-выражения может изменить используемые типы, которые нарушают редактирование и продолжают.
Похоже, что возможно внести изменения в код, который не имеет такого влияния, но я подозреваю, что это просто проще предотвратить его полностью - что также означает, что вы не начинаете вносить изменения, а затем обнаруживаете, что вы "предотвращено на полпути через ваши изменения".
(Лично я не поклонник E & C, в первую очередь, поэтому я никогда не замечал этого.)
Ответ 2
Я не знаю точно, но я предполагаю, что сложность в определении того, что нужно изменить, когда есть локальные переменные, которые поднимаются к классам. Я предполагаю, что выяснение того, какие изменения будут безопасными, и что не будет считаться сложным и подверженным ошибкам, чтобы получить право в этот момент. Инструментарий в 2010 году сосредоточился на потоковой обработке и новом интерфейсе - возможно, мы получим его в следующей версии.
Ответ 3
Я не знаю это точно, но я предполагаю, что он связан с тем, как компилятор преобразует лямбда-выражения, образуя замыкания в классы, сгенерированные компилятором. Вероятно, нет (простого) способа применить изменения к скомпилированному коду и сохранить текущее состояние.