Bir rakamı (0-9) temsil eden karakteri tam sayı karşılığına dönüştürmek, C#’ta sık karşılaşılan bir işlemdir. Bu makale, dört verimli yöntemi inceleyerek, güçlü ve zayıf yönlerini vurgulamakta ve belirli senaryonuz için en iyi yaklaşımı seçmenize yardımcı olmaktadır.
İçindekiler Tablosu
- ‘0’ Çıkarma
char.GetNumericValue()
Kullanımıchar.GetDecimalDigitValue()
Kullanımıint.Parse()
Kullanımı
‘0’ Çıkarma
Bu yöntem, ASCII ve Unicode’daki karakterlerin sıralı düzenini kullanır. Bir rakam karakterinden ‘0’ karakterinin çıkarılması, doğrudan tam sayı karşılığını verir. Özlü ve oldukça verimlidir, ancak ASCII rakamlarıyla (‘0’ ila ‘9’) sınırlıdır.
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '3';
if (char.IsDigit(digitChar))
{
int intValue = digitChar - '0';
Console.WriteLine($"'{digitChar}' karakterinin tam sayı değeri: {intValue}");
}
else
{
Console.WriteLine($"'{digitChar}' bir rakam değildir.");
}
}
}
char.GetNumericValue()
Kullanımı
char.GetNumericValue()
yöntemi, çeşitli Unicode aralıklarından rakamları işleyerek sağlam bir dönüşüm sunar. Ancak, bir int
‘e dönüştürme gerektiren bir double
döndürür ve sayısal olmayan karakterler için -1 döndürür.
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '7';
double numericValue = char.GetNumericValue(digitChar);
if (numericValue != -1)
{
int intValue = (int)numericValue;
Console.WriteLine($"'{digitChar}' karakterinin tam sayı değeri: {intValue}");
}
else
{
Console.WriteLine($"'{digitChar}' sayısal bir karakter değildir.");
}
}
}
char.GetDecimalDigitValue()
Kullanımı
GetNumericValue()
‘ye benzer, ancak özellikle ondalık rakamlar (0-9) içindir. Doğrudan bir int
döndürür ve giriş ondalık bir rakam değilse -1 döndürür, bu da onu verimli ve basit hale getirir.
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '9';
int intValue = char.GetDecimalDigitValue(digitChar);
if (intValue != -1)
{
Console.WriteLine($"'{digitChar}' karakterinin tam sayı değeri: {intValue}");
}
else
{
Console.WriteLine($"'{digitChar}' ondalık bir rakam değildir.");
}
}
}
int.Parse()
Kullanımı
int.Parse()
, bir dize gösterimini tam sayıya dönüştürür. Tek karakterler için görünüşte daha az verimli olsa da, dizeleri işlerken veya sağlam hata işleme gerektirdiğinde avantajlıdır. Giriş geçerli bir tam sayı değilse FormatException
atar.
using System;
public class CharToIntConversion
{
public static void Main(string[] args)
{
char digitChar = '5';
try
{
int intValue = int.Parse(digitChar.ToString());
Console.WriteLine($"'{digitChar}' karakterinin tam sayı değeri: {intValue}");
}
catch (FormatException)
{
Console.WriteLine($"'{digitChar}' geçerli bir tam sayı değildir.");
}
}
}
En uygun yöntem, bağlamınıza bağlıdır. Basit ASCII rakamları için ‘0’ çıkarma en hızlı yöntemdir. Daha geniş Unicode desteği ve hata işleme için GetNumericValue()
veya GetDecimalDigitValue()
tercih edilir. int.Parse()
en güçlü hata işlemeyi sunar, ancak tek karakterler için en az verimli yöntemdir. Her zaman potansiyel hataları uygun şekilde ele alın.