为什么你不能编辑和继续调试时,有方法的一Lambda表达式?
-
18-09-2019 - |
题
我已经看到了它在其他问题说,LINQ查询语法编译为一个lambda。
那么,为什么你能不能做编辑后继续运行时存在方法的Lambda表达式,同时与查询符号,你可以?
什么是最令人气愤,并认真让我考虑切换到使用查询符号的处处是,即使你的代码是不是在lambda,但在同样的方法在其他地方是拉姆达你不能编辑并继续!这是一样,造成在不知情的开发者无偿的痛苦!
解决方案
编辑并继续是能够改变方法实现“活”,但字段中的类型不是什么。
Lambda表达式(和匿名方法)可以最终创建自己的私有类型,当他们捕捉到的变量。改变λ表达式可以改变所涉及的类型,这将破坏编辑并继续。
这听起来像它的应该的可能做出更改代码,没有这个影响,但我怀疑它只是更容易防止它完全 - 这也意味着你不这样做< EM>启动的更改,然后发现你正在通过你的变化阻止了一半。
(个人我不是E&C在首位的风扇,所以我从来没有注意到这一点。)
其他提示
我不知道是肯定的,但我的猜测是围绕搞清楚什么需要时,有参与局部变量被提升到等级改变的复杂性。我猜测,搞清楚什么样的变化将是安全的,什么也不会被视为复杂和容易出错的在这一点上得到正确的。重点围绕线程和新的UI在2010年的工具 - 也许我们会得到它的下一个版本
我不知道这是肯定的,但我认为它与编译器转换形成闭合成编译器生成的类lambda表达式的方式做。可能没有(容易的)方法应用到经编译的代码所作的变更并保持当前状态。
不隶属于 StackOverflow