我有一種情況需要檢查多個條件,其中每個組合都有不同的結果。在我的具體情況中,我有兩個變量,它們是枚舉類型,每個變量可以是2個不同的值。有效檢查多個條件
enum Enum1
{
COND_1,
COND_2
}
enum EnumA
{
COND_A,
COND_B
}
Enum1 var1;
EnumA varA;
這給了我4個可能的條件,這需要4個不同的結果。我想出了這樣的幾個不同的方法,或者使用if語句或switch語句:
if(var1 == Enum1.COND_1 && varA == EnumA.COND_A)
{
// Code
}
else if(var1 == Enum1.COND_1 && varA == EnumA.COND_B)
{
// Code
}
else if(var1 == Enum1.COND_2 && varA == EnumA.COND_A)
{
// Code
}
else if(var1 == Enum1.COND_2 && varA == EnumA.COND_B)
{
// Code
}
或者:
switch(var1)
{
case COND_1:
switch(varA)
{
case COND_A:
// Code
break;
case COND_B:
// Code
break;
}
break;
case COND_2:
switch(varA)
{
case COND_A:
// Code
break;
case COND_B:
// Code
break;
}
break;
}
我想過別人的,但不希望填充代碼:P我想知道什麼是最好的方法來做到這一點。我認爲交換機比較容易閱讀,但ifs更短。如果交換機可能有多種條件,我認爲它會非常酷,但我還沒有聽說過。這也引出了一個問題:用任意數量的變量和可能的值做這件事的最好方法是什麼?
如果你以一種嚴肅的方式來做這件事,那麼你可能會使用一個規則引擎或其他第三方系統來抽取所有的代碼。 – Kayaman
爲什麼你需要檢查這樣的多個條件?你究竟在做什麼?這可以通過重新設計以更好的方式解決,而不是試圖在ifs和switch之間做出決定。 – Kayaman
https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern –