Kullanıcı girişi işlenirken, kullanıcının TextBox'a sayı yerine bir şeyler girip girmediğini dikkatlice kontrol etmek ve tür dönüşüm hatalarını önlemek kritik önem taşır. Bu, uygulamanın stabil çalışması için gereklidir.
Soru Tarihi:
VB6 ve VB.NET'te, tür dönüşüm hataları (örneğin, CInt veya Val ile) uygulamanın çökmesine neden olabiliyordu. Daha sonra, Integer.TryParse gibi daha güvenli araçlar ortaya çıktı.
Sorun:
Geçersiz verileri (harfler, özel karakterler, boş bir dizi) dönüştürmeye çalışırken, standart yöntemler (CInt, CDbl) bir istisna fırlatır. Sonuç olarak uygulama çökebilir.
Çözüm:
Güvenli dönüşüm için TryParse kullanın. Bu, bir dizeyi bir sayıya dönüştürme operasyonunun başarılı olup olmadığını döndürür ve istisnaları önler.
Kod örneği:
Dim input As String = TextBox1.Text Dim number As Integer If Integer.TryParse(input, number) Then MessageBox.Show($"Girdiğiniz sayı: {number}") Else MessageBox.Show("Hata: sayı girilmedi") End If
Ana özellikler:
TryParse başarısız olduğunda istisna fırlatmazVal("123abc") fonksiyonu ne döndürecek ve neden bu tehlikeli olabilir?
Val("123abc") 123 döndürecektir ve sayıdan sonraki rakamsal olmayan karakterleri göz ardı eder, bu da kullanıcının yanlışlıkla fazladan bir karakter girmesi durumunda hatalara yol açabilir.
CInt("") ile boş bir diziyi dönüştürmek mümkün mü?
Hayır, bu fonksiyon InvalidCastException istisnasını fırlatır.
Yerelleştirme açısından kayan noktalı sayılar için hangi yaklaşımı seçmelisiniz?
Kullanıcı Kültür Bilgisi ile birlikte Double.TryParse kullanın, çünkü bazı yerelleştirmelerde virgül , ondalık kısmı ayırıcıdır, diğerlerinde ise nokta ..
Dim value As Double Dim isParsed = Double.TryParse("3,14", NumberStyles.Any, CultureInfo.CurrentCulture, value)
Val kullanmakCInt uygulamakGeliştirici, girişi kontrol etmeden metni doğrudan sayıya dönüştürür: Dim n = CInt(TextBox1.Text).
Avantajlar:
Dezavantajlar:
Kullanıcının yanlış girişi konusunda bilgilendirildiği TryParse kullanılır (bkz. yukarıdaki örnek).
Avantajlar:
Dezavantajlar: