这段代码是否有更优雅的解决方案?
var b = someObjectThatWillNotBeNull;
var a = getA();
if(a != null) {
if(a.id == b.id) {
functionA();
} else {
functionB();
}
} else {
functionB();
}
我碰到这个结构很多,总是需要复制functionB所在的代码。它似乎有点马虎。有一个更好的方法吗?这段代码是否有更优雅的解决方案?
if (a != null && a.id == b.id) {
functionA();
} else {
functionB();
}
你的意思是这样的吗?
这会抛出一个异常,如果一个== null。 a.id不会被实例化。你可以使用try/catch块,然后实例化,但这同样是草率的。 .NET 4.0在if语句中添加了一个新关键字(我认为“也”?),只有在第一次检查成功时才会继续。取决于你使用的语言。 – Corey 2012-04-11 17:40:25
@Corey它不会。如果'a == null',那么'&&'后面的代码将不会被评估。 – trutheality 2012-04-11 17:41:36
@trutheality至少在任何理智的语言:) – jpm 2012-04-11 17:42:00
这是一个有点简单:
if (a == null || a.id != b.id)
functionB();
else
functionA();
只是我的回答。个人品味,至于哪个更清楚。 +1都一样。 – jpm 2012-04-11 17:43:11
这里,我们正在采取& &运营商为第exp的优势将作为真正的评价则只剩下一EXP将if()语句
评估中 if(a != null && a.id==b.id) {
functionA();
}
else {
functionB();
}
这可能更适合[codereview.SE]。 – 2012-04-11 17:37:14
你在用什么语言? – sll 2012-04-11 17:37:16
@sll它的VB .NET 4.0 – hanesjw 2012-04-11 18:08:45