Select Case operatörü, bir ifadenin değeriyle bir veya birden fazla durumu karşılaştırmak için kullanılır. Bu, iç içe geçmiş birçok If...ElseIf için bir alternatiftir, bu da kodu daha temiz ve okunabilir hale getirir.
Özellikler:
Case bölümü aralıkları (Case 1 To 10), ayrı değerleri (Case 2, 4, 6), karmaşık ifadeleri (Case Is > 100) içerebilir.Karmaşık durumlar:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("1 ile 5 arası") Case 6, 7, 8 Console.WriteLine("6 ile 8 arası") Case Is > 10 Console.WriteLine("10'dan büyük") Case Else Console.WriteLine("Diğer değer") End Select
If...ElseIf ile farklar:
If...ElseIf, mantıksal operatörler ile daha esnek kontroller kurmaya olanak tanır.Soru: “Select Case, eğer durumlar büyük/küçük harf duyarlılığına göre farklılık gösteriyorsa, bir dize değerini kontrol ettiğinde nasıl davranır?”
Doğru cevap: Select Case'deki karşılaştırma, Option Compare parametresine bağlıdır. Visual Basic'te varsayılan olarak karşılaştırma büyük/küçük harf duyarsızdır (Option Compare Text), ancak değiştirilebilir (Option Compare Binary). Eğer Option Compare Binary etkinleştirilirse, "test" ve "Test" farklı olarak kabul edilir.
Örnek:
' Dosyanın başında: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("Çalışacak mı? Hayır") Case "Test" Console.WriteLine("Çalışacak mı? Evet") End Select
Hikaye
Bir envanter izleme projesinde, Select Case'de sayısal kimlikleri dizeler olarak karşılaştırdık. Veri yeniden kodlanırken bazı durumlar farklı kodlama ve büyük/küçük harf farklılığı nedeniyle eşleşmedi, bu da yanlış kategorilendirmeye yol açtı.
Hikaye
Çevrimiçi forumlar geliştirilirken, kullanıcı rütbesini kontrol etmek için Case 1 To 10 aralığını kullandılar, ancak Boundary Value (sınır değeri) konusunda hata yaptılar - status=10 olduğunda bölüm çalışmadı, tasarımda dikkatsizlik yüzünden.
Hikaye
Bir banka uygulamasında, bir Case içinde iki değişkeni aynı anda kontrol etmeye çalıştılar (Case a > 5 And b < 3). Kod hata ile derlendi, ancak If...ElseIf'e geçmek, işlem yönlendirme mantığındaki hataları ortaya çıkardı.