gpt4 book ai didi

c# - 如何防止 C# 编译器/CLR 在 DEBUG 构建中优化掉未使用的变量?

转载 作者:太空狗 更新时间:2023-10-29 18:23:13 26 4
gpt4 key购买 nike

在调试时,我尝试将计算的中间结果保存到一个变量中,以便在满足断点条件时我可以检查该值。然而,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com