为什么不能在即时窗口中评估lambdas?

Max*_*Max 20 c# debugging lambda visual-studio

有什么特别的原因吗?它根本不可能或者它还没有实现吗?也许有任何第三方插件允许lambda评估?

更新:

我在codeplex Extended Immediate Window上找到了这个项目.似乎已经放弃了一段时间,但这可以证明一个概念.有没有人知道任何其他即时窗口扩展插件?那些可以在C#中运行/ foreach语句的例子?

Ome*_*viv 15

微软的JaredPar写了几篇回答你问题的博客文章:第1 部分第2部分.你会在那里找到答案.


Mar*_*ell 5

在编写lambda时,捕获变量的行为会显着改变底层代码的构造(将变量移动到编译器生成的类的字段中,这很容易本身就是链式闭包 - 上下文).

甚至不考虑这样做的一般复杂性,它将有两个选择:

  • 将所有变量值捕获为常量; 可行且非常简单,但很容易意味着在即时窗口中执行的结果与在主体中执行的结果非常不同(非常不合需要)
  • 在运行中重写整个代码(出于上述原因)(猜测,不可能)

鉴于"不受欢迎"和"不可能"之间的选择,我他们只是选择不实现本身脆弱写入非常复杂的功能.

  • @Brian - 你不可能这样做并继续执行.捕获*任何*变量等的lambda迫使IL非常**.并且**不与任何变量对话的lambda可能从一开始就不是很有趣. (3认同)