Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net

C# Tip Dönüşümleri 90839083 okunma

05.11.2018

Programlama

Rserit

Veri tipleri arasında çeşitli dönüşümler vardır. Sayısal değerler içeren veri tipleriyle sözel değerler içeren veri tipleri birbirlerine dönüştürülebilir. Burada basit bir mantık vardır. Çoğu hocanın söyleyişi, “Küçük kap, büyük kabın içerisine olur ancak tam tersi mümkün değildir” şeklindedir. Tip dönüşümlerindeki mantık da budur.

3 çeşit tip dönüşümü olmakta.

1. Sayısal-Sayısal Dönüşüm


Aynı olan ya da farklı olan gruplara ait kapsanan tip (yani küçük olan), kapsayan tipe (yani büyük olana) doğrudan atanabilir. Yani burada bir dönüşüm söz konusu değil. Mantıkla gidersek, küçük kabı büyük kabın içene koyarken zorlanmadan koyabilirsiniz. Bunun için plastiği esnetmek vs. gerekmez. Bu da aynı mantık.

Örneğin, int türü ile double türünü ele alalım. Int, double tipinden küçük olduğu için int = double yapabiliriz. Tam tersi için tip dönüşümü gerekli.

Aynı gruba ait kapsayan tip (yani büyük olan) kapsanan tipe (yani küçük olana) çevrilirken gruplar arası tip dönüşümleri gerçekleşir. Bir yukarıdaki örnekte bahsettiğim buydu. Bu çevrim C#’ta parantez içerisine çevrilecek tip yazılarak yapılır.

Aşağıdaki örnekten bunları rahatlıkla anlayabiliriz.



Yukarıdaki x = (int)y; kod satırında tip dönüşümü yapılmış. Y değeri normalde double’dı.

Dönüşümlerin sağlam olmadığı yerlerde var. Örneğin tip dönüşümü yaparken dönüştürülen değerin içeriği, dönüşünen değerinkisinden büyükse veri kayıpları meydana gelir. Nasıl mı? Basit bir örnekle gösterelim.

Aşağıdaki örnekte int türüyle atanmış bir değişkeni byte türüne atadık. Ancak değişkenimizin değeri 300. Durun bir dakika, byte türü 0-255’e kadar değer alıyor. O halde burada bir veri kaybı var. Deneyelim.





Görüldüğü gibi 44 yazdı. Neden böyle yazdı? Çünkü şu işlemden dolayı: 300-256 = 44

Mantığımızda küçük kap büyük kaba sığar ama tam tersi mümkün olmaz demiştik. Büyük kabı küçük kaba sığdırmaya çalışırsanız çeşitli yöntemler denersiniz. Kesersiniz, biçersiniz, esnetirsiniz vs. gibi işlemler yaparsınız. Bunlar da kayıplara yol açar. Bu da bu mantıkladır.

2. Sayısal – Sözel Dönüşüm

Sayısal verilerin sözele dönüştürülerek ekrana yazdırılması gerekebilir. Sayısal olarak girilen bir değer otomatik olarak sözel ekrana yazdırılamaz. Bunun için ToString(); komutu kullanılır. Buradaki mantık, değeri sayısal tutup, sözele atamaktır.

ToString(), sayısal türündeki bir değişkenin string türü istenirse gerekli olacak dönüşümü yapan komuttur. Bir örnekle bunu açıklayalım.

int a = 10;
string b = a.ToString(); // Burada sözel değişken b’yi, sayısal değişken a’ya atadım.
Console.WriteLine(b);  // Ekranda 10 yazacaktır.

Aşağıda bu örneği denedim, sonuç doğru.





ToString() metodu çoğu yerde kullanılır. C# için önemi büyüktür. Sözel değişkenlerde operatör kullanamazdık, ancak + (artı) operatörü hariçti. Şimdi ToString ile operatör kullanalım.

byte a = 1;
byte b = 2;  // Byte (sayısal tip) tipinde iki değişken oluşturduk. 

string a1 = a.ToString();
string b1 = b.ToString();

Console.WriteLine(a+b);
Console.WriteLine();  // Bir satır boşluk bıraktık.
Console.WriteLine(a1+b1);

Console.ReadLine();

Yukarıdaki komutları açıklayalım.
a. Byte (sayısal tip) tipinde iki değişken oluşturup değer verdik. Birisi a, diğeri b.
b. String (sözel tip) tipinde iki değişken oluşturup değer verdik. Birisi a1, diğeri a2. Oluşturduğumuz bu değeri, daha önce oluşturulan sayısal değişkenlere eşitleyip ToString() metodunu kullandık. ToString() sayısal değeri sözel değişkenlere atadı.
c. a ile b’yi toplattırdık. Sonuç 3 çıkacaktır. Sayısal değişkenlerde operatörler bu yöndedir.
d. a1 ile b1’i toplattırdık. Ancak sayısal olarak değil. Bu toplattırma işlemi birleştirme işlemidir. Hatırlayın, sözel değişkenlerde + operatörü birleştirme olarak iş görüyordu.

Bu örneği deneyelim.



RESIM4-1

Görüldüğü gibi ilk işlemde 3, diğer işlemde 12 yazıyor. 12 aslında bir toplama değil birleştirme oldu.

ToString()’i bu şekilde bir çok örnekte kullanabilirsiniz.           

3. Sözel – Sayısal Dönüşüm

String türündeki bir değeri double ya da int türünü çevirme işlemleridir. Sözel bir değişkenin sayısala dönüşümü birkaç ekle olur. Bunu da bir örnekle açıklayalım.

string maas = “2000”;
double d = double.Parse (maas);  // Burada maas değişkenini sayısal değişkenine çevirdik.
int x = Int32.Parse(maas);  // Burada da yukarıdaki satırın aynısını int için yaptık.

Parse, dönüşüm için uygulanan bir metot. Parse ile de yapılabilir, convert ile de yapılabilir. Parse ile convert arasında çeşitli farklılıklar vardır. Bunları farklı makalede üzerine değineceğim.

Bu örneği adım adım yapalım.

1.    String maas = “2000”;  // Sözel bir değişken oluşturduk, ismi maas. Değeri 2000.
2.    <Sayisal_degisken> <degisken_ismi> = <Sayisal_degisken>.<Donusturme_metotu>(maas);
3.    double d = double.Parse(maas);  // 2. maddenin uygulanması
4.    Console.WriteLine(maas);  // Ekrana maas degerini yazdırıyoruz.

Aşağıda örneği doğrulayalım.





Sözel değişkeni sayısala atadık ve ekrana yazdırdık. Convert metodu ile yapımını ayrı bir makalede ele alacağım. System.Convert metodu gelişmiş bir dönüşüm metodudur. Ayrıca ele alacağım.

Tip dönüşümlerini de görmüş olduk.

Recep ŞERIT

BİR YORUM YAZIN