【问题标题】:if without else and else with return;if 没有 else 和 else 有返回;
【发布时间】:2015-07-11 22:41:51
【问题描述】:

我很想知道这段代码有什么区别:

if(some condition) {some code} else {return;}

还有这段代码:

if(some condition) {some code}

两个 if 相同,只有一个没有 else,另一个有 else {return;} 自从这次回归以来,我很困惑;不返回任何值,是留下这块代码还是干别的?

【问题讨论】:

  • 取决于代码的其余部分:如果某些内容在 IF 之后并且应该被跳过,那么语句 1 与语句 2 的效果不同
  • JavaC# 的 return 语句都退出包含 return 语句的方法(不仅仅是包含它的块)。如果您的 return 语句不包含暗示包含方法返回 void 的值 - 否则当您尝试在没有值的情况下返回时会出现编译错误。

标签: if-statement return


【解决方案1】:

您的 2 个if 语句之间的主要区别如下

在第一种情况下,即在ifelse 子句中显示return 的情况下,如果代码执行进入else 部分,那么它将在return 处终止并返回给调用者-- 这可能是另一个方法或函数。

在第二种情况下,即在if 没有else 的情况下,无论if 条件的计算结果是true 还是false,代码执行都将继续到方法结束或程序然后返回给调用者——除非你在if条件的...some code部分中有返回,在这种情况下代码执行将终止并返回给调用者。

如果我们举一个更广泛的例子来突出差异。

案例一:

// beginning of code block
{
    if(some condition) 
    {
        // some code
    } 
    else 
    {
        return;
    }
    // ... some more code
} // end of the method / code block

在这种情况下,... some more code will never be executed if the ifcondition evaluates tofalse`。

案例2:

// beginning of code block
{
    if(some condition) 
    {
        // some code
    } 
    // ... some more code
} // end of the method / code block

在这种情况下,... some more code will be always executed regardless of whether the ifcondition evaluates totrueorfalse... unless you have a return within the if`条件,在这种情况下,如前面情况1所述,代码执行将返回到调用方法/函数。

【讨论】:

  • 谢谢 Shiva,您的回答完全解决了我的问题。
【解决方案2】:

else 部分就是区别。从你的设置来看,我会说第一个基本上是说如果条件 TRUE 执行代码 ELSE 返回 FALSE。第二个是说如果条件为 TRUE 执行代码。这意味着如果条件为 FALSE,它将不会返回 FALSE 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多