Perché non puoi modificare e continuare il debug quando c'è un'espressione lambda nel metodo?

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

Domanda

L'ho visto detto in altre questioni che la sintassi di query LINQ compila a un Lambda.

Allora, perché non si può fare edit-e-continua quando v'è un'espressione lambda nel metodo, mentre con la notazione delle query è possibile?

La cosa più irritante, ed è seriamente mi fa passare ad utilizzare query di notazione in tutto il mondo , è che anche se il codice non è nel Lambda, ma c'è un Lambda da qualche altra parte lo stesso metodo, non è possibile modificare-and-continua! Che è, come, dolore gratuita inflitto sviluppatori incauti!

È stato utile?

Soluzione

Modifica e continuare è in grado di cambiare il metodo implementazioni "dal vivo", ma non quello che i campi sono in tipi.

espressioni lambda (e metodi anonimi) possono finire per creare i propri tipi private quando catturano variabili. Modifica l'espressione lambda può cambiare i tipi coinvolti, che possa annullare modifica e continuare.

Sembra che dovrebbe essere possibile fare modifiche al codice che non hanno questo effetto, ma ho il sospetto che sia semplicemente più facile per evitare del tutto - il che significa anche che non fa < em> start di apportare modifiche e poi scopre che si sta impedito a metà strada attraverso la modifica.

(Personalmente io non sono un fan di E & C, in primo luogo, quindi non ho mai notato.)

Altri suggerimenti

Non lo so per certo, ma la mia ipotesi è la complessità intorno per capire cosa deve cambiare quando ci sono variabili locali coinvolte che vengono sollevati alle classi. Sto indovinando che capire quali cambiamenti sarebbe sicuro e cosa non sarebbe stato ritenuto complesso e soggetto a errori per ottenere il diritto a questo punto. Gli utensili nel 2010 focalizzato intorno threading e la nuova interfaccia utente -. Forse siamo a posto nella prossima versione

Non lo so per certo, ma suppongo che ha a che fare con il modo in cui il compilatore converte le espressioni lambda che formano le chiusure in classi compilatore ha generato. Probabilmente non esiste un modo (facile) per applicare le modifiche apportate al codice compilato e preservare lo stato attuale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top