出口選択に関して私が集めたいくつかの質問があります...
break;
と同じですか?例1
Select case Name
case "Mary"
'...
case "John"
'...
case else
end select
例2
Select case Name
case "Mary"
'...
exit select
case "John"
'...
exit select
case else
end select
これは、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
これら2つのサンプル間のパフォーマンスの違いは、他の要因と比較してほぼ確実に重要ではありません。
もう1つの用途は、ケースが多数あり、ケースの1つが、他のすべてのチェックを停止することを意味するように配置されている場合です。これはすでに発生しているため、空のcaseステートメントがある可能性があります。ただし、Exit Selectを追加して、このケースが他に何もしないことを期待していることをメンテナに明確にすることもできます。
ええと... gotoを使用するようなものです...正しいケースを見つけたら、Visual Basicではケースが消えるので、ケースを「終了」しても意味がありません。 C#では、ケースを終了する必要があります(その場合は、休憩を入れて)。
重要なのは、次のように、ケースのスコープの中央で使用できるということです。
Case 1
Do something
Do something
Evaluate
exit select
Else
Do something
それは醜いです、しかしあなたはそれをすることができます...