我在这篇文章中遇到了麻烦:
if (a)
{
if (b) // when this check fails, I need to go v
doSomething(); // v
} // v
else // < here
doSomethingElse();
我该怎么做?
UPD: if语句是否嵌套,因为a
检查对象是否为空,防止因立即检查空对象参数而导致异常。
答案 0 :(得分:2)
在可用时使用goto
的唯一方法是使用单独的条件保护外部else
语句的if
分支,而不是使其成为{{} 1}}分支。
假设嵌套else
之前有计算阻止您同时执行这两项检查,您可以这样做:
if
但是,如果条件中的代码字面上包含调用函数bool done = false;
if (a) {
...
if (b) {
doSomething();
done = true;
}
}
if (!a && !done) {
doSomethingElse();
}
和doSomething
,那么复制嵌套{{1}中doSomethingElse
函数的调用没有任何害处。分支。
答案 1 :(得分:2)
改为:
if (a)
{
if (b) {
doSomething();
}
else{
doSomethingElse();
}
}
else
doSomethingElse();
答案 2 :(得分:1)
if (a)
{
if (b)
doSomething();
else
doeSomethingElse();
}
else
doSomethingElse();
答案 3 :(得分:0)
if(a && b)
doSomething();
else
doSomethingElse();
答案 4 :(得分:0)
你不能这样做吗?
if (a && b) {
doSomething();
}
else {
doSomethingElse();
}