C#, Convert.ToInt32(), Int32.Parse(), Int32.TryParse() Farkları

Merhaba, bu yazımda sizlere Convert.ToInt32(), Int32.Parse() ve Int32.TryParse() farklarını anlatmaya çalışacağım.

Convert.ToInt32() yi, string tipteki bir değişkeni integer veri tipine dönüştürürken kullanabiliriz. Fakat bu dönüştürme işlemi bazı durumlarda hata verebilir.

Aşağıdaki örneği Convert.ToInt32() için inceleyelim,

string sayi1 = null;
string sayi2 = "123.456";
string sayi3 = "23423423423423423";
string sayi4 = "2019";


int sonuc1 = Convert.ToInt32(sayi1); // 0 döner
int sonuc2 = Convert.ToInt32(sayi2); // FormatException
int sonuc3 = Convert.ToInt32(sayi3); // OverflowException
int sonuc4 = Convert.ToInt32(sayi4); // Sonuç döner = 2019

Burada sayi1=null olduğundan sonuc1=0 döner,
sayi2 ise ondalıklı olduğundan integer’a çevrilemez bu yüzden sonuc2=System.FormatException hatası verir,
sayi3 ise int32 nin max değerini aştığından sonuc3=System.OverflowException verir,
sayi4 de ise herhangi bir aksi durum olmadığından sonuc4 olması gerektiği gibi yani 2019 döner.

 

Şimdi aynı durumu Int32.Parse() için inceleyelim,

int sonuc5 = Int32.Parse(sayi1); // ArgumentNullException
int sonuc6 = Int32.Parse(sayi2); // FormatException
int sonuc7 = Int32.Parse(sayi3); // OverflowException
int sonuc8 = Int32.Parse(sayi4); // Sonuç döner = 2019

Burada sayi1=null olduğundan sonuc5=System.ArgumentNullException hatası verir,
sayi2 ise ondalıklı olduğundan integer’a çevrilemez bu yüzden sonuc6=System.FormatException hatası verir,
sayi3 ise int32 nin max değerini aştığından sonuc7=System.OverflowException verir,
sayi4 de ise herhangi bir aksi durum olmadığından sonuc8 olması gerektiği gibi yani 2019 döner.

Gördüğünüz gibi Convert.ToInt32() ile Int32.Parse() farkında, eğer ki Int32.Parse() da değer null ise hata verir, ama Convert.ToInt32() de 0 dönmekte.

 

Şimdi aynı durumu Int32.TryParse() için inceleyelim,

int out9, out10, out11, out12;
bool sonuc9 = Int32.TryParse(sayi1, out out9); // out9 = 0 döner
bool sonuc10 = Int32.TryParse(sayi2, out out10); // out10 = 0 döner
bool sonuc11 = Int32.TryParse(sayi3, out out11); // out11 = 0 döner
bool sonuc12 = Int32.TryParse(sayi4, out out12); // out12 = 2019 döner

Burada değer null, uyumsuz format ya da maxValue gibi değerlere sahipse, TryParse kullanıldığında değerler 0 olarak döndürülür.

Bu yüzden 3 metot içinden en güvenilir olanı Int32.TryParse() diyebiliriz.

Anlatacaklarım bu kadar arkadaşlar, umarım konu anlaşılabilmiştir, anlamadığınız yerleri ya da sorularınızı yorumlarda belirtirseniz sevinirim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir