Select...Case Deyimi (Visual Basic)

İfadenin değerine bağlı olarak birkaç deyim grubundan birini çalıştırır.

Sözdizimi

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

Parça

Süre Tanım
testexpression Gerekli. İfade. Temel veri türlerinden birini (Boolean, , , Char, Date, Double, , Decimal, IntegerShortSingleSByteObjectLong, , String, UIntegerve UShortULong) değerlendirmelidir. Byte
expressionlist Bir Case deyimde 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:

- ifade1 To ifade2
- [ Is ] karşılaştırmaoperator ifadesi
- ifade

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.

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

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

içindeki expressionlist ifadeler, türüne örtük olarak dönüştürülebilir testexpression olması ve uygun comparisonoperator olanın kullanıldığı iki tür için geçerli olması koşuluyla herhangi bir veri türünde olabilir.
statements isteğ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 isteğe bağlı. Aşağıdaki bir veya daha fazla deyimCase Else, deyiminin herhangi bir yan tümcesi expressionlist Case ile eşleşmiyorsa çalışırtestexpression.
End Select ...Case inşaatının Selecttanımını sonlandırır.

Açıklamalar

Herhangi bir Case expressionlist 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 expressionlist yan tümcesi arasında testexpression eşleşme bulunmazsa komutunu çalıştırmak için kullanılırelsestatements. Gerekli olmasa da, öngörülemeyen testexpression değerleri işlemek için yapınızda Select Case bir deyim olması iyi bir Case Else fikirdir. Yan Case expressionlist 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

Is ve Case Else 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.

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

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ırmaz.

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 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 yapılar iç içe yerleştirilebilir. İç 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 yer almalı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.