Pilih...Pernyataan Kasus (Visual Basic)

Menjalankan salah satu dari beberapa grup pernyataan, bergantung pada nilai ekspresi.

Sintaks

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

Generator

Term Definisi
testexpression Harus diisi. Ekspresi. Harus mengevaluasi ke salah satu jenis data dasar (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, dan UShort).
expressionlist Diperlukan dalam pernyataan Case. Daftar klausul ekspresi yang mewakili nilai kecocokan untuk testexpression. Beberapa klausul ekspresi dipisahkan oleh koma. Setiap klausul dapat mengambil salah satu formulir berikut:

- expression1Toexpression2
- [ Is ] comparisonoperatorexpression
- expression

Gunakan kata kunci To untuk menentukan batasan rentang nilai kecocokan untuk testexpression. Nilai expression1 harus kurang dari atau sama dengan nilai expression2.

Gunakan kata kunci Is dengan operator perbandingan (=, <>, <, <=, >, atau >=) untuk menentukan batasan pada nilai kecocokan untuk testexpression. Jika kata kunci Is tidak disediakan, kata kunci secara otomatis dimasukkan sebelum comparisonoperator.

Formulir yang menentukan hanya expression diperlakukan sebagai kasus khusus dari formulir Is di mana comparisonoperator adalah tanda sama dengan (=). Formulir ini dievaluasi sebagai testexpression = expression.

Ekspresi dalam expressionlist dapat berupa jenis data apa pun, asalkan secara implisit dapat dikonversi ke jenis testexpression dan comparisonoperator yang sesuai valid untuk dua jenis yang digunakannya.
statements Opsional. Satu atau beberapa pernyataan setelah Case yang berjalan jika testexpression cocok dengan klausul apa pun di expressionlist.
elsestatements Opsional. Satu atau beberapa pernyataan setelah Case Else yang berjalan jika testexpression tidak cocok dengan klausul apa pun di expressionlist dari salah satu dari Case pernyataan.
End Select Mengakhiri definisi konstruksi Select...Case.

Keterangan

Jika testexpression cocok dengan klausul Caseexpressionlist apa pun, pernyataan setelah pernyataanCase tersebut berjalan hingga pernyataan Case, Case Else, atau End Select berikutnya. Kontrol kemudian meneruskan ke pernyataan setelah End Select. Jika testexpression cocok dengan klausul expressionlist dalam lebih dari satu klausul Case, hanya pernyataan setelah kecocokan pertama yang dijalankan.

Pernyataan Case Else ini digunakan untuk memperkenalkan elsestatements untuk dijalankan jika tidak ada kecocokan yang ditemukan antara testexpression dan klausul expressionlist di salah satu pernyataan Case lainnya. Meski tidak diperlukan, ada baiknya untuk memiliki pernyataan Case Else dalam konstruksi Select Case Anda untuk menangani nilai testexpression yang tidak terduga. Jika tidak ada klausul Caseexpressionlist yang cocok dengan testexpression dan tidak ada pernyataan Case Else, kontrol meneruskan ke pernyataan setelah End Select.

Anda dapat menggunakan beberapa ekspresi atau rentang di setiap klausul Case. Misalnya, baris berikut ini valid.

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

Catatan

Kata kunci Is yang digunakan dalam pernyataan Case dan Case Else tidak sama dengan Is Operator, yang digunakan untuk perbandingan referensi objek.

Anda dapat menentukan rentang dan beberapa ekspresi untuk string karakter. Dalam contoh berikut, Case cocok dengan string apa pun yang sama persis dengan "apel", memiliki nilai antara "kacang" dan "sup" dalam urutan alfabet, atau berisi nilai yang sama persis dengan nilai testItem saat ini.

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

Pengaturan Option Compare dapat memengaruhi perbandingan string. Di bawah Option Compare Text, string "Apel" dan "apel" membandingkannya sebagai sama, tetapi di bawah Option Compare Binary, tidak sama.

Catatan

Pernyataan Case dengan beberapa klausul dapat menunjukkan perilaku yang dikenal sebagai sirkuit pendek. Visual Basic mengevaluasi klausul dari kiri ke kanan, dan jika satu menghasilkan kecocokan dengan testexpression, klausul yang tersisa tidak dievaluasi. Sirkuit pendek dapat meningkatkan performa, tetapi dapat menghasilkan hasil yang tidak terduga jika Anda mengharapkan setiap ekspresi dalam expressionlist dievaluasi. Untuk informasi selengkapnya tentang sirkuit pendek, lihat Ekspresi Boolean.

Jika kode dalam blok pernyataan Case atau Case Else tidak perlu menjalankan pernyataan lagi di blok, kode dapat keluar dari blok dengan menggunakan pernyataan Exit Select. Ini akan mentransfer kontrol segera ke pernyataan setelah End Select.

Select Case konstruksi dapat disarangkan. Setiap konstruksi Select Case berlapis harus memiliki pernyataan End Select yang cocok dan harus benar-benar terkandung dalam satu blok pernyataan Case atau Case Else konstruksi Select Case luar di mana lapisan berada.

Contoh

Contoh berikut menggunakan konstruksi Select Case untuk menulis baris yang sesuai dengan nilai variabel number. Pernyataan Case kedua berisi nilai yang cocok dengan nilai number saat ini, sehingga pernyataan yang menulis "Antara 6 dan 8, inklusif" dijalankan.

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

Lihat juga