1

以下代码

        if (_LastMouseClickArea != null)
        {
            if (_LastMouseClickArea.GridItem == GridItem.DataCell)
            {...

失败,因为_LastMouseClickArea为空。我知道这听起来很傻,所以我来到了这里。

从即时窗口:

_LastMouseClickArea != null
true
_LastMouseClickArea 
null
_LastMouseClickArea == null
false
_LastMouseClickArea.GetType()
'((object)(this._LastMouseClickArea))' is null

什么可能导致这种行为?

4

2 回答 2

2

你有可能有比赛条件吗?因为在您检查时它不为空,但随后一个线程在您能够使用它之前将其设置为空。

于 2012-04-26T13:27:22.163 回答
1

解决方案:提交之前,我记得做一些橡皮鸭调试。这让我检查了==它是如何实现的,而且,果然,有一些奇怪的 P/Invoke 调用null != null等于 equals true

因此,如果有人遇到相同的问题,请在此处参考,以供将来参考。

于 2012-04-26T13:33:17.973 回答