C#
int.Parse ve TryParse
int.Parse ve TryParse ile güvenli sayı dönüşümü öğrenirsin.
int.Parse ile dönüştürme
Console.ReadLine() her zaman string döndürür. Sayı bekliyorsan int.Parse metodu ile bu dizeyi int'e çevirirsin. Dize geçerli bir tamsayı değilse FormatException fırlatılır.
Örneğin int n = int.Parse("42"); satırı n'ye 42 atar. Ama int.Parse("merhaba") çağrısı hata fırlatır. Bu yüzden kullanıcı girdisi için daha güvenli bir yönteme ihtiyacın var; birazdan onu göreceğiz.
int.TryParse ile güvenli dönüştürme
int.TryParse metodu, dönüştürme başarılıysa true, değilse false döndürür ve sonucu out parametresiyle verir. Hıçbir istisna fırlatmaz; bu yüzden kullanıcı girdisi için çok daha güvenlidir.
Örnek: bool ok = int.TryParse(input, out int number); satırı, input geçerliyse ok'u true yapar ve number'a değeri koyar. Geçersizse ok false olur ve number sıfır kalır. Böylece programını if (ok) ile güvenle dallandırabilirsin.
out parametresi
out anahtar kelimesi, bir metodun birden çok değer döndürmesinin yoludur. TryParse, asıl dönüşünü bool ile yapar ve dönüştürülen sayıyı out parametresiyle verir. Metodu çağırmadan önce değişkeni tanımlamak zorunda değilsin; out int number yazarak aynı satırda da tanımlayabilirsin.
Örnek: if (int.TryParse(input, out int number)) { ... } ifadesinde hem dönüşüm denenir hem de number tanımlanır. Bu, C#'ın esnek bir özelliğidir ve kodu daha kısa tutar.
Uygulama Sayıyı güvenle çözümle
input değişkenini int.TryParse ile number değişkenine çevir. Dönüşüm başarılıysa number'ı Console.WriteLine ile yazdır; değilse "Geçersiz" yazdır. if ile TryParse'ın dönüşünü kontrol etmelisin.
Örnek çözümü göster
int number; tanımla, sonra if (int.TryParse(input, out number)) ile kontrol et ve WriteLine ile yazdır.
Örnek çözüm:
using System;
class Program
{
static void Main()
{
string input = "42";
int number;
if (int.TryParse(input, out number))
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("Geçersiz");
}
}
}
Kendini test et
-
Geçersiz dizede ne olur?
int n = int.Parse("merhaba");
- 0 döner
- null döner
- FormatException fırlatır
- Program donar
Cevabı göster
FormatException fırlatır — Doğru! int.Parse geçersiz dizede FormatException fırlatır.
-
TryParse çağrısı
string input = "42";
int number;
bool ok = ____;
Console.WriteLine(ok);
Cevabı göster
string input = "42";
int number;
bool ok = int.TryParse(input, out number);
Console.WriteLine(ok);
-
TryParse neden tercih edilir?
- Daha hızlı olduğu için
- Yalnızca negatif sayılar için
- string döndürdüğü için
- Hata fırlatmadığı için
Cevabı göster
Hata fırlatmadığı için — Doğru! TryParse istisna fırlatmaz, bu yüzden kullanıcı girdisi için güvenlidir.
Sıradaki ders: double.Parse