C# Ders Notları – C# Veri Tipi Dönüşümü

Farklı türden değişkenlerin aynı ifade içinde işlem görmeleri için tür dönüşümü kullanılır. Tür dönüşümlerini aşağıdaki şekilde gruplara ayırmak mümkündür:


1) Bilinçsiz (Impicit) Tür Dönüşümleri

Derleyici tarafından bir değişkeni tanımladığımız türün dışında geçici olarak başka bir türe çevirmeye bilinçsiz tür dönüşümü denir. Bilinçsiz yapılan tür dönüşümlerinde bir nesnenin türü asla kalıcı olarak değiştirilmez. Bilinçsiz yapılan tür dönüşümleri 2 şekilde gerçekleştirilebilir. 
Küçük Türün Büyük Türe Dönüştürülmesi 

Küçük tür büyük türe dönüştürülürken fazla bitler sıfır ile doldurulur. Küçük türün yüksek anlamlı bitlerinin sıfırla beslenmesi değişkendeki değeri değiştirmediği için tür dönüşümünde herhangi bir veri kaybı olmaz.

Örn:  byte a=12;
         int b;
         b=a;

Bazı türler arasında tür dönüşümü yapmak mümkün değildir. Bunlar :

  • Bool, decimal ve double türünden herhangi bir türe 
  • Herhangi bir türden char türüne 
  • Float ve decimal türünden herhangi bir türe (float türünden double türüne dönüşüm hariç)

Büyük Türün Küçük Türe Dönüştürülmesi

Büyük türlerin küçük türlere otomatik dönüştürülmesi C#’da yasaklanmıştır. Eğer bu tür bir dönüştürme (bilinçsiz olarak) mümkün olsaydı birtakım veri kayıpları yaşanacaktır. İstenmeyen bir durumdur. Ancak “()” cast operatörü ile yapılır.
Büyük Türün Küçük Türe Dönüştürülmesi - Bilinçsiz tür dönüşümü

2) Bilinçli (Explicit) Tür Dönüşümleri

Bilinçli (explicit) tür dönüşümü genellikle derleyicinin izin vermediği dönüşümlerde kullanılır. Bu tür dönüşümlerde de yine küçük türler büyük türe ya da tersi dönüşümler yapılabilir. Küçük türlerin büyük türlere çevrilmesi aynı bilinçsiz dönüşümde olduğu gibidir. Bilinçli tür dönüşümü yapılırken “tür dönüştürme operatörleri” kullanılır. Tür dönüştürme operatörü parantez içinde değişken ya da sabitten önce yazılır.  
o(dönüştürülecek tür) degişken_yada_sabit;

Bilinçsiz yapılan tür dönüşümlerinde büyük türler, küçük türlere dönüştürülemiyordu. Eğer tür dönüştürme operatörü kullanılırsa bu işlem mümkün olur.

using System;
class Bilinçli_tip {
 public static void Main() {

     double d1,d2; int i;     byte b; char c;  uint u; short s;  d1=5.0;d2=4.0;
     
     //double int e dönüştü veri kaybı var,virgülden sonrası atılır
     i= (int) (d1/d2);Console.WriteLine(“Double integere çevrildi=”+i); Console.WriteLine();
    
     //int’i byte dönüştür, Veri kaybı yok.
     i=123;   b=(byte) i; Console.WriteLine(“i’nin değeri=”+i+”  iken  b’nin değeri=”+b);   //Veri kaybı var.
     i=258;   b=(byte) i; Console.WriteLine(“i’nin değeri=”+i+”  iken  b’nin değeri=”+b);  
    Console.WriteLine();
    
     //uint’i short’a dönüştür
     u=32146;   s=(short) u;   //Veri kaybı yok.
    Console.WriteLine(“u’nun değeri=”+u+”  iken  s’nin değeri=”+s);
    u=35000;    s=(short) u;  //Veri kaybı var.
    Console.WriteLine(“u’nun değeri=”+u+”  iken  s’nin değeri=”+s);  Console.WriteLine();
    
    //int’i char’a dönüştür.
    i=90; c=(char) i; Console.WriteLine(i+“sayısının char’a dönüştürürsek=”+c+”  olur”); }
}
Share

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir