1

我有两个参数的方法:bool1 和 bool2。当然,两者都是布尔值。我必须在代码中处理这些条件的每种组合。有没有比使用嵌套 if / else 更好的方法:

if (bool1)
{
    if(bool2)
    {
    }
    else
    {
    }
}
else
{
    if(bool2)
    {
    }
    else
    {
    }
}
4

4 回答 4

6
var bothAreTrue = bool1 && bool2;

if(bothAreTrue){

}else if(bool1){

}else if(bool2){

}else{ //none is true

}
于 2012-06-28T12:40:52.493 回答
6
if (bool1 && bool2) { }
else if (bool1) {}
else if (bool2) {}
else {}
于 2012-06-28T12:41:58.423 回答
1

为了与“策略高于实现”的理念保持一致(告诉我的代码在做什么而不是它是如何做的),你可以通过隐藏布尔值来使它更好地阅读:

public enum WhatBool1AndBool2ActuallyMean
{
    WhatItMeansWhenBothAreTrue,
    WhatItMeansWhenOnlyBool1IsTrue,
    WhatItMeansWhenOnlyBool2IsTrue,
    WhatItMeansWhenNeitherAreTrue
}

public WhatBool1AndBool2ActuallyMean GrokMeaning(bool bool1, bool bool2) {...}

...

WhatBool1AndBool2ActuallyMean meaning = GrokMeaning(bool1, bool2);
switch(meaning)
{
   case WhatBool1AndBool2ActuallyMean.WhatItMeansWhenBothAreTrue:
       ...
       break;
   case...
}
于 2012-06-28T12:44:14.690 回答
-1

老实说,这个条件可以写成..

if (bool1)
{
}

if (bool2)
{
}

因为无论第一个条件的结果如何,第二个条件都会执行。你能用更多的背景解释你的问题,或者举一个真实的例子吗?

蒂姆

于 2012-06-28T12:43:06.857 回答