Válassza ki... Esetutasítás (Visual Basic)

A kifejezés értékétől függően több utasításcsoport egyikét futtatja.

Syntax

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

Részek

Időszak Definíció
testexpression Szükséges. Kifejezés. Ki kell értékelnie az egyik elemi adattípust (Boolean, , Byte, Char, DateDouble, Decimal, Integer, Long, Object, , SByte, Short, Single, ULongStringUIntegerés ).UShort
expressionlist Utasításban Case kötelező megadni. A kifejezési záradékok listája, amelyek egyezésértékeket jelölnek a következőhöz testexpression: . Több kifejezési záradékot vessző választ el egymástól. Az egyes záradékok a következő űrlapok egyikét használhatják:

- kifejezés1Tokifejezés2
- [ Is ] összehasonlítóoperátorkifejezés
- Kifejezés

To A kulcsszóval megadhatja a megfelelő értékek tartományának határaittestexpression. Az értéknek expression1 kisebbnek vagy egyenlőnek kell lennie az értékével expression2.

Használja a Is kulcsszót egy összehasonlító operátorral (=, <>, , <, <=, >vagy >=) a találati értékek korlátozásának megadásához testexpression. Ha a Is kulcsszó nincs megadva, a rendszer automatikusan beszúrja az összehasonlítóoperátor előtt.

A csak expression a megadott űrlapot az űrlap különleges eseteként kezeli a Is rendszer, ahol az összehasonlító függvény az egyenlőségjel (=). Ez az űrlap a következőképpen lesz kiértékelve testexpression = expression: .

A benne lévő expressionlist kifejezések bármilyen típusúak lehetnek, feltéve, hogy implicit módon átalakíthatók a típusra testexpression , és a megfelelő comparisonoperator a használt két típusra érvényes.
statements Opcionális. Egy vagy több következő utasítás Case , amely akkor fut, ha testexpression megegyezik a következőben található bármelyik záradékkal expressionlist: .
elsestatements Opcionális. A következő Case Else egy vagy több utasítás akkor fut, ha testexpression nem egyezik meg egyik expressionlist utasítás egyik záradékával sem Case .
End Select Leállítja a ...Case szerkezet definíciójátSelect.

Megjegyzések

Ha testexpression egyezik egy záradékkalexpressionlistCase, az utasítást Case követő utasítások a következőre Casevagy Case ElseEnd Select utasításra futnak. A vezérlő ezután a következő End Selectutasításra kerül. Ha testexpression egy záradék több expressionlist záradékban Case is megegyezik, csak az első egyeztetési futtatás utáni utasítások.

Az Case Else utasítás a futtatás bevezetésére elsestatements szolgál, ha a többi Case utasításban nem található egyezés a záradék és expressionlist a testexpression záradék között. Bár nem kötelező, érdemes egy utasítást Case Else megadni az Select Case építkezéshez, hogy kezelje az előre nem látható testexpression értékeket. Ha nincs Caseexpressionlist egyező testexpression záradék, és nincs Case Else utasítás, a vezérlőelem a következő End Selectutasításra kerül.

Minden Case záradékban több kifejezés vagy tartomány is használható. Például a következő sor érvényes.

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

Feljegyzés

Az Is és az CaseCase Else utasításokban használt kulcsszó nem ugyanaz, mint az Is Operátor, amelyet objektumhivatkozások összehasonlítására használnak.

A karaktersztringekhez tartományokat és több kifejezést is megadhat. Az alábbi példában egyezik minden olyan sztringgel, Case amely pontosan megegyezik az "alma" értékkel, betűrendben a "dió" és a "leves" között van érték, vagy pontosan ugyanazt az értéket tartalmazza, mint az aktuális érték.testItem

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

A beállítás befolyásolhatja a sztringek Option Compare összehasonlítását. Alatta Option Compare Textaz "Apples" és az "apples" sztringek egyenlőnek tekinthetők, de alattuk Option Compare Binarynem.

Feljegyzés

A Case több záradékot tartalmazó utasítások rövidzárolásnak nevezett viselkedést mutathatnak. A Visual Basic balról jobbra értékeli ki a záradékokat, és ha egyezést testexpressionhoz létre, a többi záradék nem lesz kiértékelve. A rövidzárolás javíthatja a teljesítményt, de váratlan eredményeket eredményezhet, ha minden kifejezés expressionlist kiértékelésére számít. A rövidzárolással kapcsolatos további információkért lásd a logikai kifejezéseket.

Ha egy vagy Case Else több utasításblokkban lévő kódnak Case nem kell több utasítást futtatnia a blokkban, az utasítással kiléphet a Exit Select blokkból. Ez azonnal átviszi a vezérlőt a következő End Selectutasításba.

Select Case konstrukciók beágyazhatók. Minden beágyazott Select Case szerkezetnek egyező End Select utasítással kell rendelkeznie, és teljes egészében annak a külső Select Case építménynek egy Case vagy Case Else utasításblokkjába kell tartoznia, amelyben beágyazva van.

Példa

Az alábbi példa egy konstrukciót Select Case használ a változó numberértékének megfelelő sor írásához. A második Case utasítás az aktuális értéknek numbermegfelelő értéket tartalmazza, így a "6 és 8 közötti, befogadó" szöveget tartalmazó utasítás fut.

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

Lásd még