C# programlama dilinde kullanıcıdan aldığığımız input'lar string veri tipinde olmaktadır, ancak bizim yapmamız gereken işlemler için int, double, DateTime ya da boolean gibi veri tiplerine dönüştürmeye ihtiyaç duyabilmekteyiz. Bu konuda daha önce de aşağıdaki gibi uygulamalar paylaştım, ancak kullanışlı bir metod olması açısından TryParse metodundan da bahsetmek istiyorum.
bkz: C# konsolda kullanıcıdan input almak
bkz: C# Kullanıcıdan int veri tipinde input almak
bkz: C# Kullanıcıdan double veri tipinde input almak
Peki kullanıcıdan aldığımız input 5 yerine 5a olursa ne olur bir bakalım.
Örnek 1:
System.Console.WriteLine("bir sayı yazın");
int a = int.Parse(System.Console.ReadLine());
System.Console.WriteLine(a + " sayısının karesi = " + a*a + " olur");
Çıktı 1:
bir sayi yazin
6
6 sayisinin karesi = 36 olur
Çıktı 2:
bir sayi yazin
5a
Hata: Unhandled exception. System.FormatException: Input string was not in a correct format
Program geliştirirken olası her türlü hatayı başından öngörmek ve önlem almak gerekir. try catch blokları kullanmak da bu çözümlerden birisi olabilir, ancak bu dönüşümü kontrollü olarak yapan ve string eğer ilgili veri türüne dönüştürülmeye müsait bir değere sahipse dönüştüren (dönüştüremezse de hata vermeyen) TryParse metodu da tercih edilebilir.
TryParse metodu iki parametre alan bir metoddur ve ilk parametresinde dönüştürmeye çalışacağı string veri tipindeki değeri alır. İkinci parametresinde ise dönüşümün başarılı olması durumunda kullanılacak değeri out ön eki ile parametrik olarak alır. En sonda boolean veri tipinde bir return değeri ile dönüşümün başarılı olup olmadığını bildirir. Böylece yazılımcı da dönüşümün başarılı olup olmamasına göre ilgili karar mekanizmasını kurabilir.
Örneğin:
Console.WriteLine("bir sayı yazın");
int aNum;
bool sonuc = int.TryParse(System.Console.ReadLine(), out aNum);
if (sonuc)
System.Console.WriteLine(aNum + " kere " + aNum + " = " + aNum*aNum);
else
System.Console.WriteLine("Lütfen girdiğiniz sayıyı kontrol edin");
Çıktı 1:
bir sayi yazin
6
6 kere 6 = 36
Çıktı 2:
bir sayi yazin
6a
Lütfen girdiginiz sayiyi kontrol edin
bkz: C# implicit ve explicit dönüşümler nasıl yapılır?
bkz: (C# ve Asp.NET) Sayıların Kare Kökünü Hesaplamak
bkz: C# dairenin çevresini ve alanını metod kullanarak hesaplamak