C# Convert.ToInt32 ve int.TryParse Arasındaki Fark
C# Convert.ToInt32 ve int.TryParse Arasındaki Fark

C# “Strongly Typed Language” (Güçlü Tür Denetimine Sahip) bir dildir. Her tanımlamamızda mutlaka veri tipini de vermek zorundayız. int, string, double, bool, decimal etc. Haliyle tür dönüşümleri çok önemli bir konu haline geliyor.

Tür dönüşümlerinde genelde kullanıcıdan aldığımız string ifadeyi bir sayısal veri türüne dönüştürmek isterken Convert.ToInt32 veya int.TryParse işlemi yapıyoruz. Bu yazıda bu iki kullanımı ve aralarındaki farkı anlamaya çalışacağız.

Convert.ToInt32(string)

System.Convert sınıfının bir metodudur. Argüman olarak aldığı string ifadeyi direk dönüştürmeye çalışır, eğer string bir tam sayı (burada Int32 kullanıldı) değil ise veya null ise hata (exception) fırlatır. null değer verirlirse 0 döner.

Burada int türü üzerinden anlatılmıştır ancak aynı işlem ToDouble veya ToDecimal şeklinde de yapılabilir. Diğer türlere dönüşüm için BURAYI kontrol edebilirsiniz.

string value = "abc";
int number = Convert.ToInt32(value); // FormatException hatası verir

Convert.ToInt32 Ne zaman kullanılır?

Verinin kesinlikle sayı olacağını biliyorsak veya fırlatılan hatayı (try-catch ile mesela) kontrol altına alacaksak kullanılabilir.

int.TryParse(string, out int result)

Bu metot bize bir bool değer döner. Dönüşüm başarılı ile true, başarısız ise false döner. true olması durumunda out ile argüman kısmında tanımladığımız değişkene çıktıyı verir.

string value = "123";
if (int.TryParse(value, out int number))
{
    Console.WriteLine("Başarılı: " + number);
}
else
{
    Console.WriteLine("Geçersiz sayı!");
}

Burada çıktı için int number tanımlanmıştır ancak number dışarıda da tanımlanabilir. Bu kısımda int yerine diğer sayısal türleri de çıktı olarak alabilirsiniz.

Ne zaman kullanılır?

Bir önceki kullanımdan farklı olarak hata durumunu bool tipinde direk yapabilir, çıktıyı ise direk alabiliriz. Daha güvenli bir dönüşüm imkanı sunar.

Karşılaştırma

Convert.To.. ile int.TryParse() karşılaştırma tablosu bize özet bir bilgi sunabilir.

ÖzellikConvert.ToInt32()int.TryParse()
Hata fırlatır mı?Evet (FormatException)Hayır
null için davranış0 dönerfalse döner
Güvenli mi?HayırEvet
KolaylıkDaha kısa kodBiraz daha uzun ama güvenli

Hangisini Seçmeli?

DurumKullanman gereken
Kullanıcıdan veri alıyorsan, hata istemiyorsanint.TryParse
Kontrol sende, hata olması sorun değilseConvert.ToInt32
Nullable veriyle uğraşıyorsan (örneğin null)Genelde TryParse daha güvenlidir

Bu yazımda C# Convert.ToInt32 ve int.TryParse arasındaki fark konusunu ele almaya çalıştım. Bu içerik benim için sürekli referans olacak ve elimden geldiğince güncellemeye çalışacağım. İçeriğe katkı sağlamak isterseniz, yorum yazmaktan çekinmeyiniz.

Gönderilere yorum yazabilir, linkedin veya @huseyineskan instagram hesabımdan benimle iletişime geçebilirsiniz.

Yazılım kategorisine buradan göz atabilirsiniz.