我为什么要使用退出选择?

OrE*_*lse 19 vb.net select-case

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

  1. 在VB.NET中使用exit select是否有任何理由?
  2. 原因与性能有关吗?
  3. 退出选择是否等于break;

例1

Select case Name
case "Mary"
'...
case "John"
'...
case else

end select
Run Code Online (Sandbox Code Playgroud)

例2

Select case Name
case "Mary"
'...
exit select

case "John"
'...
exit select

case else

end select
Run Code Online (Sandbox Code Playgroud)

Joe*_*orn 37

这与使用类似C语言的语句的break关键字不同switch.使用a switch,如果省略中断控制,它将进入下一个案例.使用Visual Basic Select,控件不会失败; a 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
Run Code Online (Sandbox Code Playgroud)

这比同等的代码好一点:

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
Run Code Online (Sandbox Code Playgroud)

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

另一个用途是如果你有很多案例,并且其中一个案例被放置,以便匹配意味着你想要停止检查所有其他案例.这已经发生了,所以你可能只有一个空的case语句.但是你也可以添加一个Exit Select来向维护者明确表示你希望这种情况不会做任何其他事情.

  • 我真的认为第二个例子比第一个例子好得多,因为第二个例子是结构化而第一个不是.打破执行流程的指令(如Goto,退出等)会使代码失效. (2认同)

gbi*_*chi 5

好吧......就像使用goto一样......一旦你找到了正确的案例就没有用"退出"案例,因为在Visual Basic中它会出去.在C#中你需要退出案例(在这种情况下,休息一下).

关键是你可以在案例范围的中间使用它,例如:

Case 1
   Do something
   Do something
   Evaluate
      exit select
   Else
      Do something
Run Code Online (Sandbox Code Playgroud)

这很难看,但你可以做到......