Pourquoi ne pouvez-vous modifier et continuer le débogage quand il y a une expression Lambda dans la méthode?

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

Question

Je l'ai vu dit dans d'autres questions de la syntaxe de requête Linq compile à un Lambda.

Alors, pourquoi ne pouvez-vous faire modifier-et continuer quand il y a une expression Lambda dans la méthode, alors que la notation de requête, vous pouvez?

Qu'est-ce qui est le plus exaspérant, et qui me fait sérieusement envisager de passer à l'aide de la notation de requête partout , est que même si votre code est pas dans un autre endroit le Lambda, mais il y a un Lambda dans la même méthode, vous ne pouvez pas éditer-et continuer! C'est, comme, la douleur gratuite infligée aux développeurs imprudents!

Était-ce utile?

La solution

Modifier et continuer est en mesure de changer les implémentations de la méthode « en direct », mais pas ce que les champs sont en types.

Les expressions lambda (et méthodes anonymes) peuvent finir par créer leurs propres types privés lorsqu'ils capturent des variables. Modification de l'expression lambda peut changer les types impliqués, qui briserait modifier et continuer.

On dirait que ce devraient être possible de modifier le code qui n'ont pas cet impact, mais je pense qu'il est tout simplement plus facile de prévenir entièrement - ce qui signifie aussi que vous n'avez pas < em> start faire des changements, puis trouvez que vous êtes empêché la moitié de votre changement.

(Personnellement, je ne suis pas un fan de E & C en premier lieu, donc je ne l'ai jamais remarqué.)

Autres conseils

Je ne suis pas sûr, mais je pense la complexité autour de déterminer ce qui doit changer quand il y a des variables locales qui sont impliquées soulevaient aux classes. Je devine que déterminer quels changements serait sûr et ce qui ne serait pas été considérée comme sujette à erreur complexe et d'obtenir le droit à ce moment. L'outillage en 2010 Axé sur le filetage et la nouvelle interface utilisateur -. Peut-être nous y reviendrons dans la prochaine version

Je ne sais pas pour vous, mais je suppose qu'il doit faire avec la façon dont le compilateur convertit les expressions lambda formant des fermetures dans les classes générées par le compilateur. Probablement il n'y a pas (facile) façon d'appliquer les modifications apportées au code compilé et préserver l'état actuel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top