Yazılım Notları
Bilgi Paylaştıkça Çoğalır...

C Sharp Temelleri - 6: Tip Dönüştürme (Type Conversion)

Convert, parse, ToString

Tip Dönüştürme (Type Conversion)

Bir veriyi bir tipten başka bir tipe dönüştürme işi oldukça genel bir programcılık işidir. Örneğin, bir matematiksel işlem yapmak için kullanıcıların “bir metin kutusuna” rakam girişi yapmasını isteyebilirsiniz. Bu durumda, metin kutusuna girilen rakamlar, C# tarafından ilk başta string olarak algılanır. Matematiksel hesaplamalar yapabilmek için bu string değerin örneğin integer’ a dönüştürülmesi gerekecektir.

Dönüştürme işlemleri iki şekilde olabilir. Bunlar:

·         Genişleterek

·         Daraltarak

Genişletme yoluyla tip dönüştürme işlemi her zaman başarılı sonuçlanır. Örneğin, 32-bit bir integer değer her zaman 64-bit bir integer değere başarılı bir şekilde dönüştürülebilir. Bu işlem için herhangi özel bir kod yazılmasına gerek yoktur. Yani

int kucukSayi;

long buyukSayi;

// 32-bit uzunluğundaki olası en büyük integer sayıyı alalım

// Bu değeri almak için Int32.MaxValue sabitini kullanabiliriz.

kucukSayi = Int32.MaxValue;

// Aşağıdaki dönüştürme işlemi her zaman başarılı sonuçlanır.

// kucukSayi nın değeri ne kadar büyük olursa olsun

// (maxValue bile olsa) long tipinde tanımlanmış olan buyukSayi

// içinde olacaktır.

buyukSayi = kucukSayi;

 

Diğer taraftan, Daraltma yoluyla tip dönüştürme işlemi her zaman başarılı sonuçlanmayabilir. Bu işlemin başarılı sonuçlanıp sonuçlanmayacağı veriye bağlıdır. Eğer 32-bit uzunluğunda bir integer sayıyı 16-bit uzunluğundaki bir integer a çevirmek isterseniz ve bu sayı 16-bit uzunluğundaki sayıların en büyüğünden daha büyükse, hata ile karşılaşırsınız.

int sayac32 = 1000;

       short sayi16;

 

       // 32-bit integer sayıyı 16-bit integer sayıya çevirelim.

       sayi16 = (short)sayac32;

 

Yukarıdaki örnekte olduğu gibi explicit bir CAST kullanılmazsa int tipindeki sayac32 değişkeni, short tipine dönüştürülmeye çalışılırken derleme sırasında hata alınır.

 

 

 

 

Aşağıdaki örnekte ise, derleme sırasında hata alınmaz ama, yanlış veri tutulacaktır. Şöyle ki:

int kucukSayi;

long buyukSayi;

buyukSayi = Int32.MaxValue;

buyukSayi++;

// Buradaki işlem başarılı sonuçlanacaktır. (Runtime sırasında hata alınmaz)

// Ancak tutulan değer yanlış olacaktır çünkü kucukSayi

// buyukSayinin yenideğerini tutamaz. Zira kucukSayi değişkeninin tutabileceği

// en büyük değer Int32.MaxValue dir.

kucukSayi = (int)buyukSayi;

 

Yukarıdaki kod bloğunda yanlış veri tutmak nedeniyle yanlış bir hesaplama yapma ihtimali ve böyle bir durumun gözden kaçmasını önlemek için söz konusu conversion (dönüştürme) satırı checked blok içine alınmasında fayda vardır.

 

checked

{

      kucukSayi = (int)buyukSayi;

}

 

Tip dönüştürme hatalarının yönetilebilmesi için yukarıdaki checked bloğunun try catch içine alınması uygun olur. Yani:

 

try

       {

             checked

              {

                    kucukSayi = (int)buyukSayi;

              }

Label1.Text = kucukSayi.ToString() + "<br/>" + Int32.MaxValue.ToString();

       }

       catch (Exception hata)

       {

             Label1.Text = hata.Message.ToString();

}

 

 

C# bir rakamı metine ya da bir metini rakama çevirmek için kullanılamaz. Ama .NET böyle bir durum için çok güzel bir çözüme sahiptir. Bu da static tanımlanmış olan CONVERT metodudur.

 

int sayac;

       string sayiMetni = "10";

       // Metin olarak belirlenmiş olan "10" un

// sayısal değer olan 10' a dönüştürülmesi

       sayac = Convert.ToInt32(sayiMetni);

 

       // Sayısal değer olan 10 un metin olan "10" ' a dönüştürülmesi

       sayiMetni = Convert.ToString(sayac);

 

       // Metin olarak belirlenmiş olan "10" un

// sayısal değer olan 10' a dönüştürülmesi

       sayac = int.Parse(sayiMetni);

 

 

ETİKETLER : ASP.Net, C Sharp
 

Banka Hesap Numaralarınızı, IBAN Numaralarınızı bir kere telefonunuza kaydedin. İhtiyaç duyduğunuzda elinizin altında olsun.

Banka Hesaplarım

En Güzel Sözler Uygulaması İçin


En Çok Rating Alanlar
Ana Sayfa       Arama       Valid CSS!