空不为空
本文关键字: | 更新日期: 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
。
因此,如果有人遇到相同的问题,请在此处供将来参考。