Tür Donüsümü:
Genellikle büyük capli projelerde tanimladigimiz degiskenleri derleyicinin farkli bir türden gibi algilamasini isteriz.Ornek int türünden bir degiskenin byte türünden bir degikenle toplanmasi gibi.Bu yüzden farkli türden degiskenlerin ayni ifade icinde islem gormeleri icin tür donüsümü kullanilir.
Tür donüsümü genel olarak ikiye ayrilir;Bilincli Tür Degisimi ve Bilincsiz Tür Donüsümü...
Bilincsiz Tür Donüsümü
Derleyici tarafindan bir degiskeni tanimladigimiz türün disinda gecici olarak baska bir türe cevirmeye denir.Asagida int türünden bir nesne float türünden nesneye atanmaktadir.
using System;
class TurDonusumu
{
static void Main()
{
int s=10;
float a;
a=s;
Console.WiteLine(a);
}
}
Bu islemi saglayan,derleyicinin gizlice yaptigi tür donüsümüdür.Bu degisiklik gecicidir.Eger gecici olmasaydi a=s; ifdesinden sonra s degiskeni float türünden olurdu,bu durumda ayni isimli degisken programuin arkli noktalarinda farkli türden davranacagi icin programin karmasikligi artacaktir.Bu yüzden; ozellikle belirtilmedikce bilincsiz yapilan ür donüsümlerinde bir nesnenin türü asla kalici olarak degistirilmez!
Bilinciz yapilan tür donüsümleri genel olark iki sekilde yapilabilir.Bunlar kücük türün büyük üre cevrilmesi ve büyük türün kücük türe cevrilmesi gibidir.Fakat büyük türler kücük türlere cevrilemezler.Eger bu mümkün olsaydi büyük türlerden kücük türlere gecilirken veri kayiplari olacakti.
Kücük Türün Büyük Türe Cevrilmesi:
Kücük türler büyük türlere donüsürülürken fazla olan bitler yani büyük türden dolayi eklenen bitler sifir ile beslenir.Sifirlarla beslenmek degeri degistirmeyecegi icin veri kaybi olmaz.
using System;
class buyukkucuk
{
static void Main()
{
byte a=20;
int b;
b=a;
Console.WiteLine(b);
float f=20;
double d;
d=f;
ConsoleWriteLine(d);
char c='a';
decimal m;
m=c;
ConsoleWriteLine(m);
}
}
Bir tane daha;
using System;
class toplama
{
int a=10;
byte b=20;
short s=30;
double d;
d=a+b+s;
ConsoleWriteLine(d);
}
}
Byte türünden nesneler toplandiginda int türden nesneler üretilir.Yani iki yada daha fazla byte türünden nesne ile aritmetik islem yapacaksak sonucunu mutlaka int yada daha büyük bir türden deiskene atamaliyiz.
Ancak bazi tüler arasinda tür donüsümü yapmak mümkün degildir;
-bool,decimal ve double türünden herhangi bir türe
-Her hangi 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 haric)