【发布时间】:2013-08-09 14:55:24
【问题描述】:
在以下代码中:
MyObject objInstance;
private void someEventHandler(object sender, EventArgs e)
{
if (sender == objInstance && (sender as MyObject).SomeBoolProperty)
// Do Something
}
Resharper 警告 sender as MyObject 可能是 NullReferenceException。鉴于此代码,这可能吗?我假设如果sender == objInstance (sender as MyObject) 不会返回 null,但这不是 Resharper 消息第一次通知我我不知道的 C# 行为/功能。
【问题讨论】:
-
既然你已经建立了它们的相等性,为什么不直接使用
objInstance而不是(sender as MyObject)? -
已经进行了更改,因为
if正文使用的是objInstance,我不喜欢那些曲折的线条。我对造成它们的原因更感兴趣。 -
如果 objInstance 为 null,
sender == objInstance可以返回 true,即使它为 null。这将导致条件语句的下一部分抛出 NullReferenceException。
标签: c# resharper nullreferenceexception