我想知道在处理大量数据时这会对我的编码产生什么影响,以及如何构建我的逻辑参数
两个问题:
1)IF-ELSE和Select CASE之间的主要区别是什么?选择案例是否通过同时评估所有案例来运作?
如果我的情况是,由于其构造的性质,需要同时满足两个或更多个案例,例如
int = 5
Select case int
Case >0
Case 5
Case <0
我需要“触发”案例“1”和“2”以便采取行动,我是否使用CASE而不是IF ELSE?
2)现在对于另一种情况,如果我有一个变量会触发更多的一个案例,但我想限制只有一个案例优先,说我只想案例“1”来行动并排除其余的我是否正确地说IF-ELSE会在这方面取得胜利?
编辑 - 我意识到我的问题措辞很差。我对代码进行了一些编辑答案 0 :(得分:4)
在实际回答您的问题之前对lifting
做了一些澄清:
adhoc_overloading
开关中组合多个值,例如:Select Case
,有关详细信息,请参阅documentation on MSDN Case
,它会在找到匹配后退出(例如在示例中执行Case Is>40, 20, 10, 2 To 3
然后退出而不评估Case
)如果你想为一个值执行“both”,你可以在{0}内嵌套Case >0
:
Case 5
if
Case Is > 0
<Common code>
If i = 5 Then
<code only for case 5>
End If
Select Case
if
没有描述的所有情况下,这是一个很好的选择,例如:
If
和Select Case
,但if
更易于阅读)select
类似,你也可以使用elseif来准备多个比较,它也会在第一个完全填充的标准时停止,但是这里你的表达式每次都会被评估,直到找到匹配为止你可以使用更复杂的标准。答案 1 :(得分:0)
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
。