23

以下是我收集的关于退出选择的几个问题......

  1. 在 VB.NET 中使用退出选择有什么理由吗?
  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关键字不同。switch使用 a switch,如果您省略了中断控制,它将进入下一个案例。使用 Visual Basic Select,控制不会失败;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

与其他因素相比,这两个样本之间的任何性能差异几乎可以肯定是微不足道的。

另一种用途是,如果您有很多案例,并且放置其中一个案例以便匹配意味着您想要停止检查所有其他案例。这已经发生了,所以你可能只有一个空的 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 回答