Dela via


Välj... Ärendebeskrivning (Visual Basic)

Kör en av flera grupper med instruktioner, beroende på värdet för ett uttryck.

Syntax

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

Delar

Period Definition
testexpression Obligatoriska. Uttryck. Måste utvärderas till någon av de elementära datatyperna (Boolean, , ByteChar, Date, Double, Decimal, Integer, Long, Object, SByte, SingleShort, UIntegerString, ULongoch UShort).
expressionlist Krävs i en Case instruktion. Lista över uttryckssatser som representerar matchningsvärden för testexpression. Flera uttryckssatser avgränsas med kommatecken. Varje sats kan ha något av följande formulär:

- expression1Toexpression2
- [ Is ] jämförelseoperatoruttryck
- Uttryck

Använd nyckelordet To för att ange gränserna för ett intervall med matchningsvärden för testexpression. Värdet expression1 för måste vara mindre än eller lika med värdet för expression2.

Använd nyckelordet Is med en jämförelseoperator (=, , <<>, <=, >eller >=) för att ange en begränsning för matchningsvärdena för testexpression. Om nyckelordet Is inte anges infogas det automatiskt före jämförelseoperatorn.

Formuläret som endast expression anger behandlas som ett specialfall i formuläret Is där jämförelseoperatorn är likhetstecknet (=). Formuläret utvärderas som testexpression = expression.

Uttrycken i expressionlist kan vara av vilken datatyp som helst, förutsatt att de implicit kan konverteras till typen av testexpression och lämpliga comparisonoperator är giltiga för de två typer som används med.
statements Valfritt. En eller flera instruktioner efter Case den körningen om testexpression matchar någon sats i expressionlist.
elsestatements Valfritt. En eller flera instruktioner som följer Case Else den körningen expressionlist om testexpression inte matchar någon sats i någon av -uttryckenCase.
End Select Avslutar definitionen av ...Case konstruktionenSelect.

Kommentarer

Om testexpression matchar någon Caseexpressionlist sats körs instruktionerna efter instruktionen Case upp till nästa Case- , Case Elseeller End Select -instruktion. Kontrollen skickas sedan till -instruktionen efter End Select. Om testexpression matchar en expressionlist sats i mer än en Case sats är det bara -instruktionen som följer den första matchningen.

-instruktionen Case Elseelsestatements används för att introducera att köra om ingen matchning hittas mellan testexpression och en expressionlist -sats i någon av de andra Case uttrycken. Även om det inte krävs är det en bra idé att ha en Case Else instruktion i din Select Case konstruktion för att hantera oförutsedda testexpression värden. Om ingen Caseexpressionlist sats matchar testexpression och det inte finns någon Case Else -instruktion skickas kontrollen till -instruktionen efter End Select.

Du kan använda flera uttryck eller intervall i varje Case sats. Följande rad är till exempel giltig.

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

Kommentar

Nyckelordet IsCase som används i - och-uttrycken Case Else är inte detsamma som Is-operatorn, som används för jämförelse av objektreferenser.

Du kan ange intervall och flera uttryck för teckensträngar. I följande exempel Case matchar alla strängar som är exakt lika med "äpplen", har ett värde mellan "nötter" och "soppa" i alfabetisk ordning, eller innehåller exakt samma värde som det aktuella värdet för testItem.

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

Inställningen för Option Compare kan påverka strängjämförelser. Under Option Compare Textjämför strängarna "Äpplen" och "äpplen" som lika, men under Option Compare Binary, gör de inte det.

Kommentar

En Case instruktion med flera satser kan uppvisa beteende som kallas kortslutning. Visual Basic utvärderar satserna från vänster till höger och om man skapar en matchning med testexpressionutvärderas inte de återstående satserna. Kortslutning kan förbättra prestanda, men det kan ge oväntade resultat om du förväntar dig att alla uttryck i expressionlist ska utvärderas. Mer information om kortslutning finns i Booleska uttryck.

Om koden i ett Case - eller Case Else -instruktionsblock inte behöver köra fler av -uttrycken i blocket kan den avsluta blocket med hjälp av -instruktionen Exit Select . Detta överför kontrollen omedelbart till -instruktionen efter End Select.

Select Case konstruktioner kan kapslas. Varje kapslad Select Case konstruktion måste ha en matchande End Select instruktion och måste vara helt innesluten i ett enda Case eller Case Else instruktionsblock i den yttre Select Case konstruktionen där den är kapslad.

Exempel

I följande exempel används en Select Case konstruktion för att skriva en rad som motsvarar värdet för variabeln number. Den andra Case instruktionen innehåller det värde som matchar det aktuella värdet numberför , så instruktionen som skriver "Mellan 6 och 8, inklusive" körs.

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

Se även