Почему мне следует использовать выбор выхода?
-
20-09-2019 - |
Вопрос
Вот пара вопросов, которые я собрал относительно выбора выхода...
- Есть ли причина использовать выбор выхода в VB.NET?
- Связана ли причина с производительностью?
- Является ли выбор выхода равным
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
Решение
Это не то же самое, что использовать break
ключевое слово с switch
операторы из C-подобных языков.С 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.Но вы также можете добавить параметр «Выбор выхода», чтобы дать понять разработчикам, что вы ожидаете, что этот случай не будет делать ничего другого.
Другие советы
Хорошо...Это похоже на использование goto...Как только вы найдете правильный регистр, нет смысла «выходить» из него, поскольку в Visual Basic он будет отключен.В C# нужно выйти из дела (в данном случае с перерывом).
Дело в том, что вы можете использовать его в середине кейса, например:
Case 1
Do something
Do something
Evaluate
exit select
Else
Do something
Это некрасиво, но ты можешь это сделать...