Program yazarken yapılan bir cast işleminde tip ile ilgili bir dikkat gözden kaçırıldığında tip uyuşmazlığı hatası alınmaktadır. Bu tarz bir hata çalışma anında programın kırılmasına yol açmaktadır. Is ve as operatörleri bu noktada bizlere tipler üzerinde kontrol yapma olanağı sağlamaktadır. Öncelikle hatalı bir çevirme işlemi yapalım.
Yukarıda görüldüğü gibi bu şekilde yapılan hatalı bir cast işlemi sonrasında InvalidCastException hatası alınacaktır. Bu hatadan yola çıkarak öncelikle Is operatörünü inceleyelim.
Is operatörü cast işlemi ile dönüşüm yapılacak değişken tiplerini kontrol eder. Kontrol sonrasında geriye bool bir değer döndürür. Yukarıdaki örneği Is operatörü ile tekrar uygulayalım.
private void button1_Click(object sender, EventArgs e) { Object Deger = true; Kisiler Kisi = null; if(Deger is Kisiler) { Kisi = (Kisiler)Deger; } }
Burada Deger değişkeninin tipi is operatörü ile kontrol edilmektedir. Eğer sonuc true olursa cast işlemi yapılacaktır. Bu sadeye Exception hatasının önüne geçilmiş olunacaktır.
As operatörü ise is operatörü ile benzer bir şekilde çalışmaktadır. Arasındaki fark, is operatörü kontrol ile bool bir değer döndürürken as operatörü ilgili tipin referansını döndürmektedir. Eğer yapılan cast işlemi hatalı ise null değerini döndürmektedir.
private void button1_Click(object sender, EventArgs e) { Kisiler Kisi = new Kisiler(); Kisi.Ad = "Ali"; Kisi.Soyad = "Can"; Object Obj = Kisi as Kisiler; if (Obj != null) { MessageBox.Show("Çeviri başarılı."); } else { MessageBox.Show("Çeviri başarısız."); } }
Cast işleminin hatalı olması durumunda ise null değerini döndüreceğini söylemiştik. Aşağıda hatalı bir cast işleminin çıktısı yer almaktadır.
Is ve as operatörlerini kullanarak programda oluşabilecek bu ve benzeri hataların önüne geçebilirsiniz.
Başarılar dilerim.