2014-11-10 2 views
1

VB에서 다음과 같이 복합 문에서 Case 이외의 시나리오 (C#의 기본 값으로 떨어지는 것과 같은)를 활용하고 싶습니다. 이것이 가능한가?Case Else 시나리오를 포함하는 복합 Select Case 문을 사용할 수 있습니까?

Select Case someString 
    Case "UniqueScenario1","UniqueScenario2" 
     DoUniqueAction(); 
    Case "Default", Else 
     DoDefaultAction(); 
End Select 
+0

'Select Case someString을 사용하는 것이 나쁘다. 케이스 "UniqueScenario1", "UniqueScenario2" DoUniqueAction() 케이스 "기본" DoDefaultAction() 경우 다른 DoDefaultAction() 끝 Select'? –

+0

분명해야합니다. 코드를 두 곳에서 정의하지 않아도됩니다. C#에서 할 필요가 없으며 VB에서이 작업을 수행 할 필요가없는 방법이 있는지 궁금합니다. – moarboilerplate

+0

아래에서 언급했듯이 이것은 VB.NET에서는 불가능하지만 C#'switch'와 VB.NET'Select..Case'는 매우 다릅니다. 범위, 비교 연산자 또는 타입 검사와 같은'Is'와 같은 C#의'switch'es에서는 지원되지 않는 많은 것들이 있습니다. 이것은 VB.NET에서 작동하지 않는 것들 중 하나입니다. –

답변

0
나는 새로운 줄을 사용하여 함께 문제가 무엇을 이해하지

다른 DoDefaultAction : 당신이 Case "Default"Case Else에서 동일한 작업을 수행하려는 경우

Select Case someString 
    Case "UniqueScenario1", "UniqueScenario2" 
     DoUniqueAction() 
    Case "Default" 
     DoDefaultAction() 
    Case Else 
     DoDefaultAction() 
End Select 

그러나, 당신은 단순히 생략 할 수있다 it :

Select Case someString 
    Case "UniqueScenario1", "UniqueScenario2" 
     DoUniqueAction() 
    Case Else 
     DoDefaultAction() 
End Select 
+0

그래도 작동 하겠지만, 예기치 않은 값과 같은 방식으로 처리해야하는 특정 "예상 된"값이 있다는 것을 코드에서 호출하는 것을 선호합니다. 그런 식으로 누군가가 코드를 다시 방문 할 때 특정 값이이 범용 버킷에 들어 가지 않으며 비즈니스 논리 규칙을 다시 나타낼 필요가 없다는 것이 더 명확합니다. – moarboilerplate

+1

@moarboilerplate : 기본적으로 의사 코드에서'if "라고 쓰고 싶다. Default"OrElse Whatever Then Do DoefaultAction'? 필자의 의견으로는 별개의 'If ... ElseIf ... Else' (제 첫 번째, 반복되는'Case '와 유사 함)를 사용하는 것보다 읽기 쉽지 않습니다. 그런 식으로 둘 다 같은 행동을 일으키는 것이 분명하지만''Default ''를 명시 적으로 다루는 것이 중요합니다. 또한 비즈니스 논리를 변경하거나 별도로 기록하려는 경우와 같이 디버깅 및 유지 관리가 더 쉽습니다. 그러나 같은 줄에 특정 값과 'Case Else'를 사용하는 것은 지원되지 않습니다. –