19 Oca 2016

C#'da Veri Tipi Dönüşümleri

  • Byte türünde bir değişken, int türünde bir değişkene dönüştürülürken, byte'ın alabileceği değer aralıkları, int'dan küçük olduğu için C# derleyicisi bizim için gerekli dönüşümü kendisi yapar. Bu duruma belirsiz (implicit) dönüşüm denir.
  • Tam tersi bir durumda bizim yapmak zorunda olduğumuz dönüşümlere ise explicit dönüşüm denir.
  • Bunların yanı sıra Microsoft .Net'de parse yöntemi kullanılarak da veri tipi dönüşümü sağlanabilir.
Veri tipi dönüşümlerine örnek:

public class Ornek
    {
        public static void Run()
        {

            byte a = 255;
            byte b = 255;
            byte d = a + b;
            int e = Convert.ToInt32(d);    //explicit dönüşüm
            int c = a + b;   // a ve b implicit dönüşüm ile int'a çevrilmiştir.
           //a ve b byte olduğu halde sonuç int cinsinden çıkıyor
           // burada derleyici a'yı ve b'yi int'e çevirerek topluyor
// burada derleyici a ve b'yi short'a otomatik çevirmez, toplamı parse yöntemi ile kendimiz çevirmek zorunda kalıyoruz short d = (short)(a + b); //(a+b) parse yöntemi ile short' çevrilmiştir. }

  • Explicit dönüşümde kullanılan Convert.ToInt16( ) dönüşümünün short'u, Convert.ToInt64( ) dönüşümünün ise long'u temsil ettiği unutulmamalıdır. 
  • Bir messageBox'ta gösterilmesi istenilen bir ifade mutlaka String olmalıdır. Değilse mutlaka String'e dönüştürülmelidir.
  • Aşağıdaki kodda ekrana sonuç 0 olarak yazdırılır çünkü C# buradaki tüm sayıları int’a dönüştürerek sonucu da int olarak çıkartır. Virgülden sonra kalanlar atılır.
MessageBox.Show(((4 - 2) / 3).ToString());
  • Aşağıda sonuç 0,666666666666667 olarak çıkar. C# kodu bu sayıyı double kabul etti ve virgülden sonra 15 hane duyarlılıkla çalıştırdı.
MessageBox.Show(((4 - 2) / 3.0).ToString());
  • Aşağıdaki kodda ise sonuç 0,6666666666666666666666666667 çıktı. 28 hane duyarlılıkta. 3.0M yazdığımız için C# int bölüp decimal veri tipi sonuç verdi.
MessageBox.Show(((4 - 2) / 3.0M).ToString());

Hiç yorum yok:

Yorum Gönder