副作用与表达式

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题适用 主题适用 主题适用 主题适用

标准版

主题适用

主题适用

主题适用

主题适用

专业团队版

主题适用

主题适用

主题适用

主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

如果计算表达式会更改应用程序中数据的值,则发生副作用。

如果在调试器中计算表达式,则需要提防副作用。如果在“监视”窗口或“快速监视”对话框中计算表达式,并且表达式有副作用,则可能会无意识地更改程序其他部分中变量的值。副作用可能会在没有错误时造成有 bug 的假象,也可能会掩盖实际存在的 bug,这就使调试更加困难。

产生副作用的一个常见原因,是在调试器窗口中计算函数调用。这样的计算通常是可以注意到的。产生副作用的一个更难以捉摸的原因,是在托管代码中计算属性和其他隐式函数调用。

调试器无法区分是属性计算还是隐式函数调用产生副作用。因此,默认情况下,调试器不会自动计算隐式函数调用。属性计算在默认情况下是允许的,但可以在“选项”对话框中被关闭。在尚未计算函数调用或属性时,会显示刷新图标。可以通过单击刷新图标来手动计算表达式。有关详细信息,请参见 如何:刷新监视值

当关闭属性计算或隐式函数调用时,可以使用 ac 格式修饰符(仅适用于 C#)强制计算。请参见 C# 中的格式说明符

请参见

任务

如何:刷新监视值