带&&和||的IF函数同时

时间:2019-04-01 20:06:39

标签: c# if-statement

我想在服务器条件下AND &&和OR ||下做IF在上面

我有两个数字范围 顶部1-底部1和 Top2-Bottom2

,仅在Currentnumber在这两个范围内时执行 我可以吗?

if (OnlyAbove == True
    && (Top1 > Currentnumber || Top2 > Currentnumber)
    && (Bottom1 < Currentnumber || Bottom2 < Currentnumber)
   )
{
   Statement
}

1 个答案:

答案 0 :(得分:2)

我会弯腰说:不,您在此方面做得不好-主要是因为您的代码当前正在执行的操作没有意义。

可以帮助解决此类问题的一件事是用通用英语措词-因此您来自:

if (OnlyAbove == True
    && (Top1 > Currentnumber || Top2 > Currentnumber)
    && (Bottom1 < Currentnumber || Bottom2 < Currentnumber)
   )
{
   Statement
}

...到...

if OnlyAbove
    AND (CurrentNumber above at least one of the two Tops)
    AND (CurrentNumber below at least one of the bottoms)

毕竟,这些内括号之间的内容是“ Top1>当前 OR Top2>当前”,这实际上不是您想要的。

可以帮助解决问题的-不仅像这样编写代码,而且对读取这样的代码进行编码,会使变量有些过头。变量很棒,可以帮助您记录逻辑,因为您可以使用非常描述性的方式命名它们。

因此,请想象如下代码:

bool betweenRange1 = (Currentnumber > Bottom1) && (Currentnumber < Top1);
bool betweenRange2 = (Currentnumber > Bottom2) && (Currentnumber < Top2);
if (OnlyAbove && betweenRange1 && betweenRange2)
{
    Statement
}

... IF语句开始看起来更具可读性-乍一看显而易见。如果您在解析IF语句时遇到麻烦,那就养成一个好习惯。也许有点矫kill过正...但是矫kill过正比拥有代码要好得多,您不确定它在做什么:-)