【发布时间】:2011-10-20 06:30:47
【问题描述】:
在调试时,我尝试将计算的中间结果保存到变量中,以便在满足断点条件时检查该值。然而,C# 编译器(或 CLR)将该变量优化为未使用。我通过将变量设为类的公共字段解决了这个问题,但是我想知道是否有一个直接的解决方案来解决这个问题。
“优化代码”复选框未选中。构建配置为 Debug。
编辑:发现它只影响迭代器中一些未使用的变量,这些变量通常最终会成为自动生成的迭代器类中的字段;保留在不包含 yield 语句的块内的未使用变量。
【问题讨论】:
-
您有具体的场景吗?本地变量通常保留在调试版本中。另外:您在这里使用的是哪个编译器(确切地说)?
-
编译器是 C# 4(VS 2010,目标框架 4.0),但是我只是做了一些测试,可以确认本地变量保留在调试版本中,但迭代器是我的情况。
-
"iterators" 是我们当时遗漏的关键细节……事实上,它们经历了大规模的重写;我怀疑添加
WriteLine之类的内容是通过修改过程保留它们的最佳方式 -
是的,但不可能从一开始就提供所有相关细节,因为通常不清楚哪些细节是相关的。您的 cmets 确实为我指明了正确的方向。
-
对于信息,你想不到它;p i.stack.imgur.com/E73Uz.png