Har*_*ine 1 c# resharper nullreferenceexception
在以下代码中:
MyObject objInstance;
private void someEventHandler(object sender, EventArgs e)
{
if (sender == objInstance && (sender as MyObject).SomeBoolProperty)
// Do Something
}
Run Code Online (Sandbox Code Playgroud)
Resharper警告sender as MyObject可能是一个可能的NullReferenceException.这个代码可以吗?我假设如果sender == objInstance那(sender as MyObject)不会返回null,但这不是第一次Resharper消息告诉我C#行为/功能我不知道.
这段代码肯定会导致NullReferenceException抛出.考虑的情况下objInstance,并sender具有价值null.在这种情况下,sender == objInstance会true因为null == null,因此sender as MyObject也将返回null,代码将抛出属性访问
编写该代码的最佳方式是
var senderObj = sender as MyObject;
if (senderObj != null &&
senderObj == objInstance &&
senderObj.SomeBoolProperty) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不相信有一种方法可以显着简化这段代码.您尝试表达的3个特定的无关条件.因此,他们都必须进行测试