Değişken tipleri arasında dönüşüm yapmak
Kapalı(bilinçsiz) ve açık(bilinçli) dönüşüm tipleri.
Kapalı dönüşüm (implicit conversion) veri tipleri arasında dönüşüm yaparken bunu otomatik olarak yapar. Bu tür dönüşümler düşük kapasiteli değişkenin daha yüksek kapasiteli değişkene atanması ile oluşur. Bunu tam tersi durum olan yüksek kapasiteli bir değişkeni düşük kapasiteli bir değişkene atamaya kalkarsak hata alırız.
Örnek:
string a = 3 + "";
int b = 2;
Console.WriteLine(a + b);
Console.ReadKey();
Çıktı : 32
Yukarıda a değişkenini string türünden tanımladık, burada 3 ün yanına + "" ekleyerek string olarak tanımlanmasını sağladık, aynı işlemi string a = "3" yaparak da gerçekleştirebiliriz. Daha sonra int türünden bir b değişkeni tanımladık ve bu iki değişkeni toplayarak ekrana yazdırdık. C# burada otomatik dönüşüm yaparak (a + b)'yi string türüne dönüştürdü ve ekrana 3 ve 2'yi bitişik yazarak 32 yazdırdı. Bu olay kapalı yani biliçsiz dönüşüme bir örnektir.
Örnek:
byte a = 3;
short b = 4;
short c = a + b;
Console.WriteLine(c);
Console.ReadKey();
Yukarıdaki programı çalıştırdığımız zaman hata verecektir çünkü 3. satırda a + b ile toplama yaptık, bu toplama işlemi otomatik olarak int türüne dönüştü ve int türündeki bir değeri daha düşük kapasitede olan short türündeki c değişkenine atamaya çalışarak hatalı bir işlem yaptık. Bu tür hatalar yapmamak için aşağıdaki tabloya göz atabilirsiniz. Bilinçsiz tür dönüşüm aşağıdaki tablodaki gibidir:
Açık(biliçli) dönüşümde (explicit conversion) ise değişkenler kullanıcı tarafından bazı metotlar yardımıyla dönüştürülür.
(hedef_tür)değişken_adı şeklinde kullanılır.
int a = 3;
double b = 2.2;
double c = (double)a + b;
Console.WriteLine(c);
Console.ReadKey();
DeğişkenTürü.Parse(DönüştürülecekDeğer)
string s1 = "123";
string s2 = "342";
Console.WriteLine(Int32.Parse(s1).GetType());
Console.WriteLine(Int32.Parse(s2).GetType());
DeğişkenTürü.TryParse(Dönüştürülecek Değer, out DönüşecekDeğer)
DeğişkenTürü.TryParse(Dönüştürülecek Değer, out değişkenTipi DönüşecekDeğer)
string s1 = "123";
int s3;
Console.WriteLine(Int32.TryParse(s1, out s3));
Console.WriteLine(s3);
Console.ReadKey();
string s1 = "123";
Console.WriteLine(Int32.TryParse(s1, out int s3));
Console.WriteLine(s3);
Console.ReadKey();
int a, b, c;
Console.WriteLine("Üç sayı giriniz :");
a = Int32.Parse(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
double orta = Convert.ToDouble(a + b + c) / 3;
Console.WriteLine(orta);
Console.ReadKey();
Yorumlar
Yorum Gönder