Select...Case Deyimi (Visual Basic)

İfadenin değerine bağlı olarak çeşitli deyim gruplarından birini çalıştırır.

Syntax

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

Bölümler

Süre Tanım
testexpression Gereklidir. Ifa -de. Temel veri türlerinden birini (Boolean, , , Char, Date, Double, Decimal, , Integer, Long, Object, SByte, ShortSingle, String, , UIntegerULongve UShort) değerlendirmelidirByte.
expressionlist Deyiminde Case gereklidir. için testexpressioneşleşme değerlerini temsil eden ifade yan tümcelerinin listesi. Birden çok ifade yan tümcesi virgülle ayrılır. Her yan tümce aşağıdaki formlardan birini alabilir:

- ifade1Toifade2
- [ Is ] comparisonoperatorexpression
- Ifa -de

To için bir eşleşme değerleri aralığının sınırlarını belirtmek için testexpressionanahtar sözcüğünü kullanın. değerinin expression1 değerinden expression2küçük veya değerine eşit olması gerekir.

Is için eşleştirme değerleri testexpressionüzerinde bir kısıtlama belirtmek için anahtar sözcüğünü karşılaştırma işleciyle (=, <<>, , <=, >veya >=) kullanın. Anahtar sözcük sağlanmazsa Is , karşılaştırmaoperatörden önce otomatik olarak eklenir.

Yalnızca expression belirten form, karşılaştırma çalıştırıcısınınIs eşittir işareti (=) olduğu formun özel bir durumu olarak kabul edilir. Bu form olarak testexpression = expressiondeğerlendirilir.

içindeki expressionlist ifadeler, türüne örtük olarak dönüştürülebilir olmaları ve birlikte kullanıldığı iki tür için uygun comparisonoperator olması koşuluyla herhangi bir veri türünde testexpression olabilir.
statements İsteğe bağlı. içindeki herhangi bir yan tümceyle eşleşiyorsa testexpression aşağıdaki bir veya daha fazla deyim Case çalıştırılırexpressionlist.
elsestatements İsteğe bağlı. Aşağıdaki bir veya daha fazla deyimCase Else, deyiminin herhangi bir yan tümcesi expressionlistCase ile eşleşmiyorsa çalışırtestexpression.
End Select ...Case yapı tanımını Selectsonlandırır.

Açıklamalar

Herhangi bir Caseexpressionlist yan tümceyle eşleşirsetestexpression, bu deyimi izleyen Case deyimler sonraki Case, Case Elseveya End Select deyimine kadar çalışır. Denetim daha sonra aşağıdaki End Selectdeyimine geçer. Birden Case fazla yan tümcedeki bir expressionlist yan tümceyle eşleşiyorsatestexpression, yalnızca ilk eşleşmeyi izleyen deyimler çalıştırılır.

deyimiCase Else, diğer Case deyimlerden herhangi birinde ve yan tümcesi arasında testexpression bir expressionlist eşleşme bulunamazsa komutunu çalıştırmak üzere tanıtmak elsestatements için kullanılır. Gerekli olmasa da, öngörülemeyen testexpression değerleri işlemek için yapınızda Select Case bir ifade olması iyi bir Case Else fikirdir. Hiçbir Caseexpressionlist yan tümce eşleşmezse testexpression ve deyimi yoksa Case Else , denetim aşağıdaki End Selectdeyimine geçer.

Her Case yan tümcede birden çok ifade veya aralık kullanabilirsiniz. Örneğin, aşağıdaki satır geçerlidir.

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

Not

ve deyimlerinde Case kullanılan anahtar sözcük, nesne başvurusu karşılaştırması için kullanılan Is İşleci ile aynı değildir.Case ElseIs

Karakter dizeleri için aralıklar ve birden çok ifade belirtebilirsiniz. Aşağıdaki örnekte, Case tam olarak "elmalar" ile eşit olan herhangi bir dizeyle eşleşir, alfabetik sırada "fındık" ile "çorba" arasında bir değere sahiptir veya geçerli değeriyle testItemtam olarak aynı değeri içerir.

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

ayarı Option Compare dize karşılaştırmalarını etkileyebilir. altında Option Compare Text, "Apples" ve "apples" dizeleri eşit olarak karşılaştırır, ancak altında Option Compare Binarykarşılaştırılmaz.

Not

Birden çok yan tümcesine sahip bir Case deyim kısa devre olarak bilinen davranışlar sergileyebilir. Visual Basic yan tümceleri soldan sağa değerlendirir ve biri ile testexpressioneşleşme oluşturursa, kalan yan tümceler değerlendirilmez. Kısa devre performansı artırabilir, ancak içindeki her ifadenin expressionlist değerlendirilmesini bekliyorsanız beklenmeyen sonuçlara neden olabilir. Kısa devre oluşturma hakkında daha fazla bilgi için bkz. Boole İfadeleri.

Bir Case veya Case Else deyimi bloğundaki kodun bloktaki deyimlerden herhangi birini çalıştırması gerekmiyorsa, deyimini Exit Select kullanarak bloğundan çıkabilirsiniz. Bu, denetimi hemen aşağıdaki End Selectdeyimine aktarır.

Select Case inşaatlar iç içe olabilir. İç içe yerleştirilmiş Select Case her yapıda eşleşen End Select bir deyim bulunmalıdır ve tamamen iç içe yerleştirildiği dış Select Case yapıdaki tek Case veya Case Else deyim bloğu içinde bulunmalıdır.

Örnek

Aşağıdaki örnek, değişkeninin numberdeğerine karşılık gelen bir satır yazmak için bir Select Case yapı kullanır. İkinci Case deyim geçerli değeriyle eşleşen değeri numberiçerir, bu nedenle "6 ile 8 arasında, dahil" yazan deyimi çalışır.

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

Ayrıca bkz.