副作用与表达式
如果计算表达式会更改应用程序中数据的值,则发生副作用。
如果在调试器中计算表达式,则需要提防副作用。如果在**“监视”窗口或“快速监视”**对话框中计算表达式,并且表达式有副作用,则可能会无意识地更改程序其他部分中变量的值。副作用可能会在没有错误时造成有 bug 的假象,也可能会掩盖实际存在的 bug,这就使调试更加困难。
产生副作用的一个常见原因,是在调试器窗口中计算函数调用。这样的计算通常是可以注意到的。产生副作用的一个更难以捉摸的原因,是在托管代码中计算属性和其他隐式函数调用。
调试器无法区分是属性计算还是隐式函数调用产生副作用。因此,默认情况下,调试器不会自动计算隐式函数调用。属性计算在默认情况下是允许的,但可以在“选项”对话框中被关闭。在尚未计算函数调用或属性时,会显示刷新图标。可以通过单击刷新图标来手动计算表达式。有关详细信息,请参见 如何:刷新监视值。
当关闭属性计算或隐式函数调用时,可以使用 ac 格式修饰符(仅适用于 C#)强制计算。请参见 C# 中的格式说明符。