空不为空

本文关键字: | 更新日期: 2023-09-27 18:32:24

以下代码

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

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

从即时窗口:

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

什么可能导致此行为?

空不为空

你有竞争条件吗? 就像检查时它不为空一样,但是在您可以使用它之前,线程将其设置为 null。

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

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

相关文章:
  • 没有找到相关文章