Veri türlerini dönüştürme
Tip
Daha fazla ayrıntı için Metin ve resimler sekmesine bakın!
C# kesin olarak yazıldığı için bazen bir değeri bir veri türünden diğerine açıkça dönüştürmeniz gerekir. Bu özellikle kullanıcı girişiyle çalışırken önemlidir, çünkü Console.ReadLine() kullanıcı bir sayı yazdığınızda bile her zaman metin (a string) döndürür.
Dönüştürme neden önemlidir?
Bu yaygın senaryoya göz önünde bulundurun:
Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int nextYear = ageInput + 1; // ERROR! Can't add int to string
Kullanıcı girişiyle matematik işlemi yapmak için önce dizeyi sayıya dönüştürmeniz gerekir.
Dönüştürme yöntemleri
C# veri türleri arasındaki değerleri değiştirmek için yöntemler sağlar Convert :
| Method | Şuna dönüştürülür: | Example | Result |
|---|---|---|---|
Convert.ToInt32() |
int | Convert.ToInt32("42") |
42 |
Convert.ToDecimal() |
decimal | Convert.ToDecimal("19.99") |
19.99m |
Convert.ToDouble() |
çift | Convert.ToDouble("3.14") |
3.14 |
Convert.ToString() |
dizgi | Convert.ToString(42) |
"42" |
Önceki senaryoyu şu şekilde düzeltebilirsiniz:
Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int age = Convert.ToInt32(ageInput);
int nextYear = age + 1;
Console.WriteLine($"Next year you'll be {nextYear}");
Bu kodu C# Kod Düzenleyicisi'nde kendiniz çalıştırmayı deneyebilirsiniz.
Ayrıştırma yöntemleri
Dizeleri sayılara dönüştürmenin bir diğer yolu da yöntemlerdir Parse :
int age = int.Parse("25");
decimal price = decimal.Parse("19.99");
double average = double.Parse("87.5");
Hem int.Parse() hem de Convert.ToInt32() benzer şeyler yapar; tercih ettiğiniz stili kullanın.
Sayısal türler arasında atama
Sayısal türler arasında dönüştürme yapmak için (decimal ile int arasında olduğu gibi), hedef türü parantez içinde belirterek bir cast işlemi kullanın:
decimal price = 19.99m;
int wholePrice = (int)price; // Casts to int: 19 (decimal dropped)
Console.WriteLine(wholePrice); // Output: 19
Bölme sırasında ondalık duyarlığı korumak için de yayın yapabilirsiniz:
int first = 7;
int second = 2;
decimal result = (decimal)first / (decimal)second;
Console.WriteLine(result); // Output: 3.5
Geçersiz dönüştürmelerle ne olur?
Sayı olarak yorumlanamaz bir değeri dönüştürmeye çalışırsanız, C# bir hata oluşturur:
int number = Convert.ToInt32("hello"); // ERROR: Input string was not in a correct format
Şimdilik, denemeden önce değerin dönüştürülebileceğinden emin olun. Daha sonra hataları düzgün bir şekilde işlemeyi öğreneceksiniz.