Veri türlerini dönüştürme

Tamamlandı

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.