在调试时,我尝试将计算的中间结果保存到一个变量中,以便在满足断点条件时我可以检查该值。然而,C# 编译器(或 CLR)将该变量优化为未使用。我通过将变量设为类的公共(public)字段解决了这个问题,但是我想知道是否有直接解决这个问题的方法。
“优化代码”复选框未选中。构建配置是 Debug。
编辑:发现它只影响迭代器中一些未使用的变量,这些变量通常最终会作为自动生成的迭代器类中的字段;不包含 yield 语句的 block 内未使用的变量将被保留。
最佳答案
惰性选项是......使用值,理想情况下不允许将其保存在堆栈中。例如:
var tmp = SomeMethod();
// your other code
Debug.WriteLine(tmp);
将值用作参数意味着它必须保留,但该行不会自动编译到发布版本中。
但是!我必须强调,本地人几乎总是保留在未优化/调试构建中,所以我发现问题中的场景很难想象。
关于c# - 如何防止 C# 编译器/CLR 在 DEBUG 构建中优化掉未使用的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831964/