2009-12-17 18 views
14

Oto kilka pytań Zebrałem dotyczące zjazdu wybrać ...Dlaczego powinienem używać opcji wyboru wyjścia?

  1. Czy jest jakiś powód, aby korzystać wyjście wybrać w VB.NET?
  2. Czy przyczyna ma coś wspólnego z wydajnością?
  3. Czy wyjście jest równe break;?

Przykład 1

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

end select 

Przykład 2

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

case "John" 
'... 
exit select 

case else 

end select 

Odpowiedz

30

To nie tak samo jak przy użyciu słowa kluczowego break z instrukcjami switch z języków podobnych do języka C. Przy switch, jeśli pominiesz kontrolkę przerwania, przejdzie ona do następnego przypadku. W przypadku Visual Basic Select kontrola nie przechodzi; a break jest już dorozumiany.

Można jednak użyć go jako klauzuli wartownika, aby uniknąć potrzeby umieszczania kodu w innym poziomie w bloku if. Na przykład:

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 

To trochę ładniejszy niż ten równoważnego kodu:

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 

Wszelkie różnice wydajności pomiędzy tymi dwoma próbkami jest prawie na pewno nieistotne w porównaniu z innymi czynnikami.

Jednym z innych zastosowań jest to, że masz dużo przypadków, a jeden z przypadków jest umieszczony tak, że mecz oznacza, że ​​chcesz przestać sprawdzać wszystkie pozostałe. To już się dzieje, więc możesz mieć tam puste oświadczenie dotyczące sprawy. Ale możesz również dodać opcję Wybierz wyjście, aby wyjaśnić opiekunom, że spodziewasz się, że ta sprawa nie spowoduje niczego innego.

+2

Naprawdę, drugi przykład jest o wiele ładniejszy od pierwszego, ponieważ drugi jest strukturowany, a pierwszy nie. Instrukcje, które przerywają przebieg wykonywania (jak Goto, Exits, itp.), Niestrukturalizują kodu. –

+1

@SoMoS: Lubię mieć klauzule strażnicze na początku metod sprawdzania warunków wstępnych, ale w środku sprawy Select, zgadzam się z tobą, że drugi przykład jest lepszy w większości przypadków. –

5

Cóż ... To jest jak za pomocą goto ... Po znalezieniu prawidłowego przypadek nie ma sensu w „wyjściu "sprawa, ponieważ w Visual Basic będzie wychodził. W języku C# należy zamknąć skrzynkę (w tym przypadku z przerwą).

Chodzi o to, że można go używać w środku zakresu sprawy, coś jak:

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

Jest brzydki, ale można to zrobić ...

+0

Rzeczywiście tak jest i jako takie należy go unikać. –

Powiązane problemy