If statement 如何使内部if语句转到外部if语句的“else”?
我在这件作品上遇到了麻烦:If statement 如何使内部if语句转到外部if语句的“else”?,if-statement,If Statement,我在这件作品上遇到了麻烦: if (a) { if (b) // when this check fails, I need to go v doSomething(); // v } // v else // < here
if (a)
{
if (b) // when this check fails, I need to go v
doSomething(); // v
} // v
else // < here
doSomethingElse();
我该怎么做
UPD:if语句是嵌套的,因为a检查对象是否为null,防止立即检查null对象的参数而导致异常。除了在可用的情况下使用goto之外,唯一的方法是使用单独的条件保护外部if语句的else分支,而不是将其设置为else分支
if(a && b)
doSomething();
else
doSomethingElse();
假设嵌套之前有计算,如果这会阻止您同时执行两个检查,则可以执行以下操作:
bool done = false;
if (a) {
...
if (b) {
doSomething();
done = true;
}
}
if (!a && !done) {
doSomethingElse();
}
但是,如果您的条件中的代码实际上包含调用函数doSomething和doSomethingElse,那么在嵌套的else分支中复制doSomethingElse函数的调用是无害的。更改为:
if (a)
{
if (b) {
doSomething();
}
else{
doSomethingElse();
}
}
else
doSomethingElse();
你就不能这么做吗
if (a && b) {
doSomething();
}
else {
doSomethingElse();
}
您没有指定最初应该编辑您的帖子,而不是将其放在评论中。另外,为什么不能事先检查空对象?这并不总是一个有效的答案。在我的例子中,b是一个要求输入True或False的用户提示,只有在a为True时才应该调用它true@Mehdi在if语句中,如果第一个条件失败,那么第二个条件将永远不会得到计算。这适用于我使用过的所有语言,包括C语言。它被称为。依我看,这应该是正确的答案。如果你没有像OP那样在If a和ifb之间有代码,那么最好的答案是。调用它,如果第一个条件为false,则不会计算第二个条件。
if (a)
{
if (b)
doSomething();
else
doeSomethingElse();
}
else
doSomethingElse();