带有&&的if块中表达式的顺序如何物?

时间:2017-08-22 18:51:47

标签: c#

我在C#unity 3D游戏的更新功能中调用了if块。不用说,它会被调用很多,所以我尽可能地优化它。我需要做两次检查:

telnet ip_address 3306

现在,对于每个被调用的更新,我想首先检查简单的playerIsFlagged,然后检查距离。所以我写道:

if (playerIsFlagged == true){
    if (player.distance < 10){
        doaction()
    }
}

在这种情况下,代码是否会在失败if测试之前测试两个变量值,或者当它检查第一个(playerisFlagged)是否为假时它会自动跳过第二个(距离)检查?

换句话说,两种情况下的表现是否存在差异?

2 个答案:

答案 0 :(得分:1)

在第一种情况下,如果playerIsFlagged为true,那么它将检查第二个条件。

在第二种情况下,如果playerIsFlagged为false,则跳过第二种情况。这称为short-circuit evaluation

答案 1 :(得分:0)

首先,if(booleanValue == true)是多余的,你可以写if(booleanValue)if(!booleanValue)来检查错误。

在回答您的问题时,使用双&&就是这样,检查第一个操作数,如果是,则忽略其余操作。同样的规则适用于双||