23

出口選択に関して私が集めたいくつかの質問があります...

  1. VB.NET で exit select を使用する理由はありますか?
  2. その理由はパフォーマンスと関係がありますか?
  3. 出口選択は に等しい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
4

2 に答える 2

46

C に似た言語のステートメントでbreakキーワードを使用するのと同じではありません。switchswitch、ブレーク コントロールを省略すると、次のケースにフォールスルーします。Visual BasicSelectでは、コントロールは失敗しません。abreakはすでに暗示されています。

ただし、コードをブロック内の別のレベルにネストする必要がないように、ガード句として使用できます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 を追加して、このケースでは他に何もしないことをメンテナーに明確にすることもできます。

于 2009-12-17T19:56:05.710 に答える
6

ええと... goto を使用するようなものです... 正しいケースを見つけたら、ケースを「終了」しても意味がありません。Visual Basic では終了するからです。C# では、ケースを終了する必要があります (その場合は、ブレークを使用して)。

ポイントは、次のようなケースの範囲の途中で使用できることです。

Case 1
   Do something
   Do something
   Evaluate
      exit select
   Else
      Do something

めんどくさいけどできるよね…

于 2009-12-17T19:54:53.950 に答える