如何检查属性值变为“null”的原因

时间:2011-10-26 13:32:13

标签: c# winforms visual-studio-2005

我有这样的属性

调试后,我可以看到m_displayType成为null。谁能告诉我如何检查背后的原因?我检查了DisplayType以外的所有参考文献,除了我错过了。

5 个答案:

答案 0 :(得分:2)

在属性设置器中放置一个断点并查看调用堆栈。

答案 1 :(得分:0)

你需要在setter ....中设置一个断点,它将给出值是否为null

答案 2 :(得分:0)

在setter中设置断点。转到断点窗口(Debug-> Windows-> Breakpoints)。右键单击断点并选择“Condition ...”。添加“value == null”并选中“Is true”。

答案 3 :(得分:0)

由于setter中的value可能是null,您可能会认为您将其设置为null。

m_displayType != value

考虑到上述行,如果valuenullm_displayType不是,则符合条件且m_displayType = value等同于m_displayType = null

关于如何调试它,正如其他人所说,设置一个断点(选择合适的行并按 F9 ,我相信) - 然后运行并逐步执行代码,这将允许你逐行见证执行,看看 的确切内容以及如何将其应用于m_displayType

还有可能在其他地方设置m_displayType:它受保护这意味着继承者可以直接操作该值,因此您是否找到了对该属性的基础变量的所有引用并相应地检查它们?

答案 4 :(得分:0)

除了调试它并查看堆栈以查看调用DisplayType的位置之外,还需要确保不使用m_displayType字段而不是属性来更改值。您可以在m_displayType字段和DisplayType属性中查找VS中的所有引用,以查看它们的使用位置。另外,有没有理由将m_displayType字段定义为protected而不是private?