c#: VS 2008调试器执行属性代码
本文关键字:执行 属性 代码 调试器 2008 VS | 更新日期: 2023-09-27 18:08:21
我有以下两行代码:
lstvbWerteC.Clear ();
if (...)
lstvbWerteC是List[DebuggerBrowsable (DebuggerBrowsableState.Never)]
。然而,只要本地窗口可见,调试器似乎就会执行填充列表的代码。隐藏了locals窗口后,列表在到达if断点时始终为空。
Visual Studio菜单:工具-选项-调试-常规。取消选中"启用属性计算"选项。
这是来自Visual Studio 2010。Visual Studio 2008应该有相同或类似的选项
我想您所描述的行为在大多数文档中是未定义的。当然,没有要求任何调试器(包括VS !)都应该尊重DebuggerBrowsable
属性。此外,在调试窗口中缺少显示项的并不一定保证该项不被调试器计算。
在调试选项下有一个名为"启用属性评估"的选项,可能对您的具体情况有帮助,也可能没有帮助,但总的来说,我想说您不能依赖这个。
有一个经常被重复的建议:"属性getter不应该有[可见的]副作用。"您的属性获取器确实有副作用,这会给您的调试体验带来问题,但它也可能使您的类作为一个整体对其他开发人员来说难以理解。我的建议是考虑重新设计,这样获取属性值就不会改变列表的内容。