這不是與使用類似C語言的break
關鍵字和switch
語句相同。使用switch
,如果您省略了中斷控制,它將轉入下一個案例。使用Visual Basic Select
,控制不會通過;已經暗示了break
。
但是,您可以將它用作警戒子句,以避免需要在if
塊中嵌套另一個級別的代碼。例如:
Select Case SomeEnumVar
Case SomeEnum.SomeValue1
If Not SomeCondition Then Exit Select
'Do something
Case SomeEnum.SomeValue2
'Do something else
Case Else
'Default case
End Select
這比該等效代碼更好一點:相比其他因素
Select Case SomeEnumVar
Case SomeEnum.SomeValue1
If SomeCondition Then
'Do something
End If
Case SomeEnum.SomeValue2
'Do something else
Case Else
'Default case
End Select
這兩個樣本之間的任何性能差異幾乎可以肯定是微不足道的。
另一個用途是,如果您有很多案例,並且其中一個案例被放置以便匹配意味着您想停止檢查所有其他案例。這已經發生了,所以你可能只是在那裏有一個空的case語句。但是你也可以添加一個Exit Select來讓維護者清楚你希望這種情況不會做其他事情。
真的,第二個例子比第一個更好,因爲第二個例子是結構化的,第一個不是。中斷執行流程的指令(如轉到,退出等)解構代碼。 – 2009-12-18 09:23:50
@SoMoS:我喜歡在方法開始時使用guard子句來檢查前提條件,但在Select Case中,我傾向於同意你的觀點,第二個例子在大多數情況下更好。 – 2009-12-18 14:30:21