IF ELSE与Select Case

我想知道在处理大量数据时这将如何影响我的编码,以及如何构build我的逻辑参数

两个问题:

1)IF-ELSE和Select CASE的主要区别是什么? select案例是否同时评估所有案件?

如果我有一种情况,就其性质而言,需要同时满足两个或两个以上的情况,例如,

int = 5 Select case int Case >0 Case 5 Case <0 

在哪里我需要“触发”案件“1”和“2”的行动,我是否使用IFE ELSE?

2)现在对于另一种情况,如果我有一个variables会触发更多的一个案例,但我想只限于一个案件的优先权,说我只会喜欢案件“1”的行动,排除其余的,是我有权说IF-ELSE会在这方面取得胜利吗?

编辑 – 我意识到我的问题措辞不佳。 我对代码做了一些编辑

在回答你的问题之前对Select Case一些澄清:

  • 正如你所build议的那样,可以在VBA中的一个Case开关中组合几个值,例如: Case Is>40, 20, 10, 2 To 3 ,更多信息请参阅MSDN上的文档
  • 它最多可以执行一个Case ,它会在find匹配后退出(例如,在例子中执行Case >0然后退出,甚至没有评估Case 5
  • 它只会评估你的variables/expression式一次,并使用相同的值进行所有的比较,
  • 如果你想为一个值执行“both”,你可以嵌套在case内:

     Case Is > 0 <Common code> If i = 5 Then <code only for case 5> End If 

Select Case优势

  • 当您的决定是关于单个变体/expression式的多个值时,效率更高
  • 当你的expression式是一个耗时函数的结果时,它也可以是非常有用的,在这种情况下,与if相比,你真的可以节省时间

If优点

  • 基本上,在Select Case中没有描述的所有情况下都是很好的Select Case例如:
    • 只有两个select可供select(这是同时与ifselect ,但if更容易阅读)
    • 你有多个expression式在决定时考虑,你不能轻易地将它们转换 为一个单一的值
  • Select Case类似,您也可以使用elseif来准备多重比较,它也会在第一个完全满足的条件下停止,但是在这里您的expression式将被每次评估直到find匹配,当然您可以使用更复杂的条件。

If-Else和Switch语句在不同的情况下是好的。

例如,If-Else具有如下的逻辑条件:

 if (n < 5 && a > 5) { } // && is a logical AND 

和嵌套的结构

 if (n < 5) { if (n < 0) { } else { } } else { } 

你不能在switch语句中这样做。

但是,在某些情况下,开关更好,更优雅,更快:

 switch (a) { case 1: case 2: case 3: // ... break; case 4: break; case 5: break; case 6: break; case 10: break; default: break; } 

在if-else格式中看起来很糟糕:

 if (a == 1 || a == 2 || a == 3) { } else if (a == 4) { } else // ... 

我不确定你的情况,但是在大多数语言中, switch语句更高效。

简单地说,每次都可以使用switch语句,并且有两种以上的情况。 如果只有两种情况,或者不可能使用开关 – 使用if