Select...Case — Instrukcja (Visual Basic)

Wykonuje jedną z kilku grup instrukcji, w zależności od wartości wyrażeń.

Select [ Case ] testexpression
    [ Case expressionlist
        [ statements ] ]
    [ Case Else
        [ elsestatements ] ]
End Select

Części

Termin

Definicja

testexpression

Wymagane.Wyrażenie.Must evaluate to one of the elementary data types (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, and UShort).

expressionlist

Wymagane w Case instrukcji.Lista klauzul wyrażenie reprezentujące dopasowanie wartości dla testexpression.Wiele klauzul wyrażenia są oddzielone przecinkami.Każdej klauzuli można wykonać jedną z następujących form:

  • wyrażenie1 To wyrażenie2

  • IsOperatorPorównaniawyrażenie 

  • wyrażenie

Użyj To słowo kluczowe, aby określić granice zakresu dopasowanie wartości dla testexpression.Wartość expression1 musi być mniejsza niż wartość expression2.

Użyj Is słowa kluczowego z operator porównania (=, <>, <, <=, >, lub >=) aby określić ograniczenie na dopasowanie wartości testexpression.Jeśli Is słowo kluczowe nie jest podany, automatycznie dodaje się przed OperatorPorównania.

Formularz, określając wyłącznie expression jest traktowana jako szczególny przypadek Is gdzie tworzą OperatorPorównania jest znak równości (=).Ten formularz jest oceniane jako testexpression = expression.

Wyrażenia w expressionlist może być dowolnego typu danych, pod warunkiem że są one niejawnie typu testexpression i odpowiednie comparisonoperator jest prawidłowa dla dwóch typów jest używany z.

statements

Opcjonalne.Jeden lub więcej następujących instrukcji Case Jeśli Uruchom testexpression pasuje do każdej klauzuli w expressionlist.

elsestatements

Opcjonalne.Jeden lub więcej następujących instrukcji Case Else Jeśli Uruchom testexpression nie pasuje do każdej klauzuli w expressionlist któregokolwiek z Case instrukcji.

End Select

Kończy definicję Select...Case konstrukcji.

Uwagi

Jeśli testexpression pasuje do dowolnego Caseexpressionlist klauzuli, sprawozdania, po Case instrukcji uruchamiane do następnego Case, Case Else, lub End Select instrukcji. Następnie sterowanie przechodzi do następujących instrukcji End Select.Jeśli testexpression pasuje do expressionlist klauzuli w więcej niż jednym Case klauzuli, sprawozdania, po pierwsze dopasowanie uruchomić.

Case Else Instrukcji jest używany do wprowadzenia elsestatements do uruchomienia, jeśli nie znaleziono między testexpression i expressionlist klauzuli w dowolnym z drugiej strony Case instrukcji.Mimo że nie jest to wymagane, jest dobrze byłoby mieć Case Else instrukcji w sieci Select Case konstrukcji do obsługi nieprzewidzianych testexpression wartości.Jeśli nie Caseexpressionlist pasuje do klauzuli testexpression i nie ma żadnych Case Else instrukcji, sterowania przekazywany jest do następujących instrukcji End Select. 

Można użyć wielu wyrażeń lub zakresów w każdym Case klauzuli.Na przykład następujący wiersz będzie obowiązywał.

Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber

[!UWAGA]

Is Słowo kluczowe użyte w Case i Case Else sprawozdania nie jest taka sama, jak Is — Operator (Visual Basic), który jest używany dla porównania odniesienia obiektu.

Można określić zakresy i wielu wyrażeń dla ciągów znaków.W poniższym przykładzie Case reprezentuje dowolny ciąg jest dokładnie równa "jabłka", ma wartość między "orzechy" i "soup" w kolejności alfabetycznej lub zawiera dokładną wartość samą jako bieżącą wartość testItem.

Case "apples", "nuts" To "soup", testItem

Ustawienie Option Compare może mieć wpływ na porównywanie ciągów.W obszarze Option Compare Text, ciągi "Jabłka" i "jabłka" Porównaj jako równe, ale poniżej Option Compare Binary, nie robią.

[!UWAGA]

A Case instrukcji z wieloma klauzulami mogą wykazywać zachowanie znany jako zwieranie.Visual Basic ocenia klauzul od lewej do prawej i jeśli produkuje dopasowania z testexpression, pozostałe klauzule nie są sprawdzane.Zwieranie można poprawić wydajność, ale może wygenerować nieoczekiwane wyniki, jeśli oczekiwane jest wyrażenie, co w expressionlist mają być poddane ocenie.Aby uzyskać więcej informacji dotyczących zwieranie, zobacz Wyrażenia logiczne (Visual Basic).

Jeśli kod w ramach Case lub Case Else instrukcji bloku nie trzeba uruchamiać żadnych kolejnych instrukcji w bloku, należy go zamknąć bloku za pomocą Exit Select instrukcji.To przekazuje sterowanie natychmiast po instrukcji do End Select.

Select Casekonstrukcje mogą być zagnieżdżane.Każdy zagnieżdżone Select Case budowy musi mieć odpowiadający mu End Select instrukcji i muszą być całkowicie zawarte wewnątrz pojedynczego Case lub Case Else instrukcji bloku zewnętrznego Select Case budowy, w którym jest zagnieżdżony.

Przykład

W poniższym przykładzie użyto Select Case konstrukcji do zapisu linii odpowiadające wartości zmiennej number.Drugi Case instrukcja zawiera wartość, która odpowiada bieżącej wartości number, więc instrukcji zapisuje "między 6 i 8 włącznie" jest uruchamiany.

Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True. 
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case 9 To 10
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

Zobacz też

Informacje

Choose

End — Instrukcja

If...Then...Else — Instrukcja (Visual Basic)

Option Compare — Instrukcja

Exit — Instrukcja (Visual Basic)