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

时间:2009-12-17 19:50:24

标签: vb.net select-case

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

  1. 在VB.NET中使用exit select是否有任何理由?
  2. 原因与性能有关吗?
  3. 退出选择是否等于break;
  4. 示例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
    

2 个答案:

答案 0 :(得分:36)

与使用来自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来向维护人员说明你希望这种情况不会做任何其他事情。

答案 1 :(得分:5)

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

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

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

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