Yazılım Bir Tutku

Tecrübe ilimden üstündür !

C# da Tip Dönüşümleri

Tarih : 01.09.2010 02:58:58 Kategori : C# Hit : 5558

Merhabalar arkadaşlar;

C# makale serimize C# da tip dönüşümleri ile devam ediyoruz. Bu günki konumuza başlamadan önce çok kısa bir bilgi tekrarı yaparak hafızalarımızı yeniliyelim. C# da her hangi bir değişken tanımlarken o değişkenin tutacağı değerin türünün belirlenmesi ve bu tür belirleme işlemininde veri tipleri ile yapıldığını biliyoruz. Buraya kadar herşeyi biliyoruz. Peki örneğin tanımladığımız bir değişkenin ihtiyaç duymamız halinde ki mutlaka ihtiyaç duyuyor olacağız veri tipini değiştirmek zorunda kalırsak o zaman nasıl bir yol izleyeceğiz ? C# bu konuda bize nasıl kolaylıklar sağlamıştır. İşte bu günki makalemizde bu soru ve soruların cevaplarına değineceğiz.

.NET Framework  "implicit conversion" yani kapalı dönüşüm, "explicit conversion" yani açık dönüşüm ve System.Convert sınıfı kullanılarak yapılan tip dönüşümleri olmak üzre bu alanda bize iki farkılı dömüşüm seçeneği sunmaktadır. Imlicit Conversion yani kapalı dönüşümü tercih etmemiz durumunda bize çok fazla iş düşmemekte. Zira tip dönüşüm işlemleri bu seçenekte .NET Framework tarafından gerçekleştirilmektedir.Implicit Conversion seçeneğinde ise tip dönüşümünde değerin hangi tipe dönüşeceğini bizim belirtiyor olmamız gerekmekte. Burada belirtmek istediklerimizi dilerseniz birer örnek üzrinden açıklamalı olarak bir kez daha inceleyelim.

Implicit Coversion için örnek :

int toplam; (Burada başlangıç değeri verilmemiş int türünden bir değişken tanımladık )
byte sayi = 25 ; ( Burada ise 25 sayısal değere ahip  byte türünden başka bir değişken daha tanımladık )
toplam = sayi ; ( Burada ise başlangıç değeri verilmemiş toplam isimli değişkenimizi 25 sayısal değerine sahip sayi değişkenine eşitledik )

Bu eşitleme durumlarında daima eşitliğin sağ tarafında bulunan değer eşitliğin sol tarafında bulunan değişkenin tipine dönüşür. Bu kural doğrultusunda başlangıçta byte olan sayi değişkeni artık int tipine dönüşmüş oldu. Peki Implicit Conversion larda sonuç daima başarılımıdır ?  Yani bu dönüşüm işleminde herhangi bir kural yokmudur ? Elbetteki bu dönüşüm işleminde gayet basit bir kuralımız var. Bir veri tipi kendisinden daha küçük olan bir veri tipine Implicit Converison olarak çevrilemez. Şimdi dilerseniz bir tablo halinde hangi veri tipleri hangi veri tiplerine çevrilebilir onları inceleyelim.



Yukarıda bulunan tablo doğrultusunda tip dönüşümlerini gerçekleştirmeniz halinde bir hata almayacaksınızdır.

Şimdi bir örnek yapalım ve bu yeni örneğimiz üzerinden de konuşarak ikinci tip dönüşüm şeklimiz yani explicit conversion dönüşümü ne şekilde gerçekleşir onu görelim.

byte toplam; 
int sayi = 25 ;
toplam = sayi ;

Bu örneğimizde hata alacağız. Çünki int veri tipi kuralımız gereği kendisinden daha küçük olan byte veri tipine dönüşmeyecektir.

Tip dönüşümlerinde tip uyumsuzlukları durumunda tip atama işlemini  " cast " ile yaparız. İşte bu uygulamayada explicit conversion denir. Cast işleminde tip dönüşümü yapılacak olan değişkenin başına parantez içerisinde atanan yeni tip i yazılır.

int toplam;
byte sayi = 25 ; 
toplam = (int) sayi ;

Şu ana kadar açık ve kapalı tip dönüşümlerini inceledik. Son olarak Sytem.Conver sınıfını kullanarak tip dönüşümlerinide inceleyelim ve bu makalemizide sonlandırmış olalım.

Bu dönüşüm şeklinde ise aslında explicit Conversion dönüşümlerinde izlediğimiz yola benzer bir yol izlemekteyiz. Tip dönüşümü yapılacak değer veya değişken parantezler içerisine alınır ve sağ tarafına Comvert.YeniTip seklinde atama yapılır.

toplam = Convert.ToInt32 (sayi) ;  gibi..
Yada daha sıklıkla kullanacağını bir örnek daha sunalım. Senartomuz kullanıcıdan değerler aldığımız textbox larımız olsun. Textbox dan aldığımız değeri int tipine çeviricez. Yani kullanıcı textbox a 5 yazdığında bu string türünden değilde int türünden işleme alınacak.

int sayi = Convert.ToInt32 (txtSayi.Tex) ; gibi...

Evet bir makalemizinde daha sonuna gelmiş olduk. Yeni bir makaleye kadar bol C# lı günler dilerim. Kalın sağlıcakla.

Takip Ediyorum

Faydalı Projeler

Yorumlar

"Klavyene sağlık" bayılıyorum bu cümleye :)
Faydalı olduysa ne mutlu. Teşekkür ederim İlkin

Sagol hocam klavyene saglik !

Sizde Yorumda Bulunun

Konuya dair fikir ve sorularınızı paylaşın