我有两个参数的方法:bool1 和 bool2。当然,两者都是布尔值。我必须在代码中处理这些条件的每种组合。有没有比使用嵌套 if / else 更好的方法:
if (bool1)
{
if(bool2)
{
}
else
{
}
}
else
{
if(bool2)
{
}
else
{
}
}
我有两个参数的方法:bool1 和 bool2。当然,两者都是布尔值。我必须在代码中处理这些条件的每种组合。有没有比使用嵌套 if / else 更好的方法:
if (bool1)
{
if(bool2)
{
}
else
{
}
}
else
{
if(bool2)
{
}
else
{
}
}
var bothAreTrue = bool1 && bool2;
if(bothAreTrue){
}else if(bool1){
}else if(bool2){
}else{ //none is true
}
if (bool1 && bool2) { }
else if (bool1) {}
else if (bool2) {}
else {}
为了与“策略高于实现”的理念保持一致(告诉我你的代码在做什么而不是它是如何做的),你可以通过隐藏布尔值来使它更好地阅读:
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...
}
老实说,这个条件可以写成..
if (bool1)
{
}
if (bool2)
{
}
因为无论第一个条件的结果如何,第二个条件都会执行。你能用更多的背景解释你的问题,或者举一个真实的例子吗?
蒂姆