【发布时间】:2012-11-21 17:27:08
【问题描述】:
我一直在处理这类问题,想知道您是否有任何巧妙优雅的解决方法:
if(myObject != null && myObject.myProperty != myValue){
//do something
}else{
//do something else
}
如果我运行这个逻辑,我会在 myObject 为空时得到空引用,所以我最终会这样做:
if(myObject != null){
if(myObject.myProperty != myValue){
//do something
}else{
//do something else
}
}else{
//do something else
}
所以我最终在我的“做其他事情”上有多余的代码,你们如何处理这个?
【问题讨论】:
-
您确定第一个代码中有两个
&符号吗?如果你只有一个,你会期望一个空引用。两个应该防止这种情况发生。 -
这里的`do something else's 到底有什么不同?
-
你的第一个代码段是有效的
-
你确定吗?如果
myObject为空,它将使您的 if 语句短路并完全按预期工作。 -
如果
myObject是null它不会评估第二个条件,如果它不是null它不应该抛出NullReferenceException。你的第一个代码很好!
标签: c# if-statement logic