Utvald... Ä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 |
Obligatoriskt. Uttryck. Måste utvärderas till någon av de elementära datatyperna (Boolean , , Byte Char , Date , Double , Decimal , Integer , Long , Object , SByte , Single Short , UInteger String , ULong och 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:- expression1 To expression2- [ 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 Case
expressionlist
sats körs instruktionerna efter instruktionen Case
upp till nästa Case
- , Case Else
eller 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 Else
elsestatements
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 Case
expressionlist
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 Is
Case
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 Text
jä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 testexpression
utvä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 number
fö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