以下是关于退出选择的几个问题......
在VB.NET中使用exit select是否有任何理由?
原因与性能有关吗?
退出选择是否等于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
Joel Coehoor.. 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
这比同等的代码好一点:
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来向维护者明确表示你希望这种情况不会做任何其他事情.
这与使用类似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
这比同等的代码好一点:
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来向维护者明确表示你希望这种情况不会做任何其他事情.
好吧......就像使用goto一样......一旦你找到了正确的案例就没有用"退出"案例,因为在Visual Basic中它会出去.在C#中你需要退出案例(在这种情况下,休息一下).
关键是你可以在案例范围的中间使用它,例如:
Case 1 Do something Do something Evaluate exit select Else Do something
这很难看,但你可以做到......