存在的情况下选择情况下,可以更有效的比,如果:当你在If条件“或”条款清单,你不需要评估所有这些建立的真相条件。假设有一个if语句如此:
If A() Or B() Then
DoSomething()
ElseIF C() or D() Then
DoSomethingElse()
Else
DoTheDefault()
EndIF
在这种情况下,为了评估所述第一if语句,这两个函数A()和B()被执行,并且类似地对于第二if语句时A( )和B()都是假的。如果A()返回true,那么B()的值是不重要的,除非它以你实际需要的方式改变程序状态(通常不是好的做法),否则B()的执行是多余的。编译器受限于测试的所有部分必须在结束一个值之前执行(根据语言规范不允许优化测试)。
您可以将条件分隔成多个IfElse语句来自行优化它,但这会使代码变得不易读,并且会在稍后进行更改时增加错误的危险。我发现,使用选择案例是在这种情况下更好:
Select Case True
Case A(), B()
DoSomething()
Case C(), D()
DoSomethingElse()
Case Else
DoTheDefault()
End Select
现在,如果A()返回true,则B()是不是在所有的评估。对条件的评估按照列出的顺序进行,因此您可以通过将测试按照最可能返回True或最低成本执行的顺序(取决于应用程序)进行优化来帮助优化代码。
我完全没有意识到你可以测试范围,以及'选择案例' –
+1的很多好的论点,因为强调'选择案例',因为'Select'是LINQ。 – Neolisk