¿Por qué no se puede editar y continuar con la depuración cuando hay una expresión lambda en el método?

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

Pregunta

Lo he visto en otras preguntas, dijo que la sintaxis de las consultas LINQ compila a un Lambda.

Entonces, ¿puedes no hacer edit-y-seguir cuando hay una expresión lambda en el método, mientras que con la notación de consulta que puede?

Lo que es más irritante, y está haciendo en serio me considere cambiar a usar consulta notación todas partes , es que incluso si el código no está en la Lambda, pero hay una Lambda en otro lugar del mismo método, no se puede editar y continuación! Eso es, al igual que, el dolor infligido a los desarrolladores gratuita incautos!

¿Fue útil?

Solución

Editar y continuar es capaz de cambiar las implementaciones de métodos "en vivo", pero no lo son los campos en los tipos.

Las expresiones lambda (y métodos anónimos) pueden llegar a crear sus propios tipos particulares cuando capturan las variables. Cambio de la expresión lambda puede cambiar los tipos involucrados, lo que rompería editar y continuar.

Parece que debe será posible hacer cambios en el código que no tienen este impacto, pero sospecho que es simplemente más fácil de prevenir por completo - que también significa que no lo hace < em> start de hacer cambios y luego encuentra que usted está impedido a mitad de camino a través de su cambio.

(Personalmente no soy un fan de E & C, en primer lugar, por lo que nunca he notado.)

Otros consejos

No sé a ciencia cierta, pero yo creo que es la complejidad en torno a averiguar lo que hay que cambiar cuando hay variables locales implicadas, que se levantan a las clases. Supongo que el cálculo de los cambios que sería seguro y lo que no se consideró complejo y propenso a errores de hacerlo bien en este punto. El utillaje en 2010 centrado alrededor de roscado y la nueva interfaz de usuario -. Tal vez tengamos que en la próxima versión

No sé a ciencia cierta, pero supongo que tiene que ver con la forma en que el compilador convierte las expresiones lambda forman cierres en clases compilador generado. Probablemente no hay forma (fácil) para aplicar los cambios realizados en el código compilado y preservar el estado actual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top