Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C#’ta is ve as Operatörleri

Merhaba,

Programlama dilinde bir çok yapı, kendisi haricinde diğer yapılarla organize halde çalışabilmesine yahut algoritmik olarak eşlik edebilmesine dikkat edilerek dizayn edilmektedir. Bu yazımızda kendi başlarına bir işlem icra ederken, birlikte bir bütünü ifade eden is ve as operatörlerini ele alacağız.

Öncelikle as operatöründen başlayalım.

as Operatörü

Bildiğiniz gibi elimizdeki herhangi bir nesneyi T tipine çevirebiliyorsa, çeviren, yok eğer çeviremiyorsa null dönen bir operatördür.

        static void Main(string[] args)
        {
            NorthwindEntities Veri = new NorthwindEntities();
            object Personel = Veri.Personeller.ToList().LastOrDefault();
            Personeller _Personel = Personel as Personeller;
            Console.WriteLine(_Personel != null ? "Personel" : "Null");

            Console.Read();
        }

Yukarıdaki örnek kod bloğu object tipteki nesneyi Personeller tipinde as operatörüyle elde etmeye çalışmaktadır.

is Operatörü

Eldeki nesnenin tipini tanımlamamızı sağlar. Yani hangi tipten(classtan) bir nesne olduğunu is operatörü ile sorgulayabilmekteyiz.

        static void Main(string[] args)
        {
            NorthwindEntities Veri = new NorthwindEntities();
            object Personel = Veri.Personeller.ToList().LastOrDefault();
            Console.WriteLine(Personel is Personeller ? "EVET" : "HAYIR");
            
            Console.Read();
        }

Gördüğünüz gibi object tipteki nesnenin asıl tipinin Personeller olup olmadığını sorgulayabiliyoruz.

as ve is Operatörlerinin Beraber Kullanımı

Elimizdeki nesneyi T tipinde elte etmek istiyorsak ve bu dönüşümden emin değilsek iki operatörü aşağıdaki gibi algoritmik harmanlayabiliriz.

        static void Main(string[] args)
        {
            NorthwindEntities Veri = new NorthwindEntities();
            object Personel = Veri.Personeller.ToList().LastOrDefault();
            Personeller _Personel = null;
            if (Personel is Personeller)
                _Personel = Personel as Personeller;

            Console.WriteLine(_Personel.Adi);
            Console.Read();
        }

Gördüğünüz gibi öncelikle is operatörüyle nesnenin tipini öğrendik, ardından as operatörüyle ilgili tipte nesneyi kesin elde ettik.

İyi çalışmalar.

Bunlar da hoşunuza gidebilir...

3 Cevaplar

  1. Semih Şenocak dedi ki:

    Emeğinize sağlık…

  2. Ömer dedi ki:

    Merhaba hocam öncelikle teşekkür ederim. Son örnekte as ve is operatörlerini birlikte kullanırken eğer personel nesnesi Personeller sınıfından türememişse _personel geriye null mı döndürecek yoksa kod hatamı verir?

  1. 14 Ekim 2016

    […] verileri yahut base class olan yapılar tarafından refere edilmiş nesnelerin tiplerini “is” operatörü tarafından tespit […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir