C# Programming

C#’ta Güçlü String’den Integer’a Dönüşüm

Spread the love

C# programlamada dizeleri tam sayılara dönüştürmek temel bir görevdir. Bu makale, çeşitli senaryoları ve olası hataları ele almada en iyi uygulamaları vurgulayarak en verimli ve sağlam yöntemleri inceliyor.

İçindekiler Tablosu

Sağlam TryParse() Metotları

TryParse() metotları (örneğin, Int32.TryParse(), Int64.TryParse(), Int16.TryParse()), C#’ta dize-tam sayı dönüşümü için genellikle tercih edilen yaklaşımdır. İstisnalardan kaçınarak Parse() metotlarına göre önemli bir avantaj sunarlar. Bunun yerine, ayrıştırılmış tam sayıyı bir out parametresi aracılığıyla döndürerek başarı veya başarısızlığı gösteren bir Boole değeri döndürürler.

Bu yaklaşım, try-catch bloklarına olan ihtiyacı ortadan kaldırarak verimliliği ve kod okunabilirliğini artırır. TryParse() ayrıca taşma istisnalarını da zarif bir şekilde ele alarak istisna fırlatmak yerine false döndürür.


string strNumber = "12345";
int number;
bool success = Int32.TryParse(strNumber, out number);

if (success)
{
    Console.WriteLine("Tam sayı değeri: " + number);
}
else
{
    Console.WriteLine("Geçersiz giriş. Dize geçerli bir tam sayı değil.");
}

Parse() Metotları: Basit Ancak Riskli

Parse() metotları (örneğin, Int32.Parse(), Int64.Parse(), Int16.Parse()), dizeleri tam sayılara dönüştürmenin daha özlü bir yolunu sunar, ancak önemli bir dezavantajları vardır: Giriş dizisi geçerli bir tam sayı gösterimi değilse istisnalar (FormatException) fırlatırlar. Bu, karmaşıklık ve potansiyel performans ek yükü ekleyerek try-catch blokları kullanılmasını gerektirir.


string strNumber = "12345";
int number;

try
{
    number = Int32.Parse(strNumber);
    Console.WriteLine("Tam sayı değeri: " + number);
}
catch (FormatException)
{
    Console.WriteLine("Geçersiz giriş. Dize geçerli bir tam sayı değil.");
}

Sözdizimi açısından daha basit olsa da, ele alınmayan istisnaların artan riski, TryParse()‘ı daha güvenli ve genellikle daha iyi bir alternatif yapar.

Convert.ToInt*() Metotları: Düşünülecek Alternatifler

Convert sınıfı, Convert.ToInt32(), Convert.ToInt64() ve Convert.ToInt16() gibi metotlar sağlar. Parse()‘a işlevsel olarak benzer şekilde, bunlar da başarısız olunca istisna fırlatırlar. Boşlukları veya sınır durumlarını işlemekte ince farklılıklar sunabilirler, ancak istisnalara karşı aynı savunmasızlığı paylaşırlar, bu da TryParse()‘ı daha sağlam seçenek yapar.


string strNumber = "12345";
int number;

try
{
    number = Convert.ToInt32(strNumber);
    Console.WriteLine("Tam sayı değeri: " + number);
}
catch (FormatException)
{
    Console.WriteLine("Geçersiz giriş. Dize geçerli bir tam sayı değil.");
}

İhtiyaçlarınıza Uygun Metodu Seçme

Çoğu senaryo için TryParse() önerilen yaklaşımdır. İstisna işleme güvenliği ve verimliliği onu üstün bir seçim yapar. İstisnaları doğrudan kodunuzda işlemek ve potansiyel performans etkilerini anlamak için çok özel bir nedeniniz olduğunda yalnızca Parse() veya Convert.ToInt*() kullanın. Her zaman giriş değerlerinizin beklenen aralığına göre uygun tam sayı türünü (Int16, Int32, Int64) seçin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir