
Değişken türleriyle ilgili temel bilgileri ve hangi türde değişkenler olduğunu önceki makalelerimizde bahsetmiştik. Yine ufak bir özet geçmek gerekirse herhangi bir değişkeni tanımlayıp onu kullandığımızda sistem hafızadan tanımlanan değişken türünün boyutu kadar alan ayırır. Bazı durumlarda tanımladığımız değişken türünü farklı bir türe dönüştürmemiz veya farklı değişken tiplerindeki verilerle işlemler yapmamız gerekebilir. Bu gibi durumlar için izin verilen türler arasında dönüşümler yapabilirsiniz.
Değişkenlerin tür dönülümler Açık (explicit) ve Örtülü (implicit) olmak üzere ikiye ayrılır.
Örtülü (kapalı) dönüşümler
Örtülü dönüşümlerde dönüştürülecek veri türü hafızada daha fazla bir alan kaplayan hedef türe dönüştürülecektir. Bu yüzden dönüştürmek istediğiniz veri, diğer türe dönüştüğünde herhangi bir veri kaybı yaşamazsınız.
Örtülü dönüşüm yapabileceğiniz türlerin listesi;
Tür
|
Dönüştürülebilecek Türler
|
Byte
|
short, ushort, int, uint, long, ulong, float, double veya decimal
|
Sbyte
|
short, int, long, float, double veya decimal
|
Int
|
long, float, double veya decimal
|
Uint
|
long, ulong, float, double veyadecimal
|
Short
|
int, long, float, double veya decimal
|
Ushort
|
int, uint, long, ulong, float, double veya decimal
|
Long
|
float, double veya decimal
|
Ulong
|
float, double veya decimal
|
Float
|
double
|
Char
|
ushort, int, uint, long, ulong, float, double veya decimal
|
Örnek Dönüşüm
int sayi = 320223;
long buyukSayi = sayi;
Açık dönüşümler
Açık dönüşümlerde, kapalı dönüşümde olduğu gibi doğrudan hedef türe eşitleyerek çalıştırmak istediğinizde uygulamada hata alırsınız. Bu tip dönüşümlerde hafızada kaplanan alan ve veri türleri farklılık gösterebileceğinden veri kaybı yaşanabilir. Kullanıcı veri dönüşümü yapmak istediğinde dönüştürmek istediği türü belirtmesi gerekmektedir. Burada belirtilmesinin sebebi kullanıcının veri kaybına uğrayabileceğinin farkında olmasıdır.
Tür
|
Dönüştürülebilecek Türler
|
Byte
|
sbyte veya char
|
Sbyte
|
byte, ushort, uint, ulong veya char
|
Int
|
sbyte, byte, short, ushort, uint, ulong veya char
|
Uint
|
sbyte, byte, short, ushort, int veya char
|
Short
|
sbyte, byte, ushort, uint, ulong veya char
|
Ushort
|
sbyte, byte, short veya char
|
Long
|
sbyte, byte, short, ushort, int, uint, ulong veya char
|
Ulong
|
sbyte, byte, short, ushort, int, uint, long veya char
|
Float
|
sbyte, byte, short, ushort, int, uint, long, ulong, char veya decimal
|
Double
|
sbyte, byte, short, ushort, int, uint, long, ulong, char, float veya decimal
|
Char
|
sbyte, byte veya short
|
Decimal
|
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, veya double
|
Örnek Dönüşüm
static void Main()
{
double sayiDouble = 1234.7;
int sayiInt;
sayiInt = (int)sayiDouble;
Console.WriteLine(sayıInt);
}