8 Eylül 2019 Pazar

Tip Kontrolü (Type Checking)

       S.a. Arkadaşlar,
       Uzun süren bir aradan sonra nihayet gelebildim. İnsan yazmaya alışınca yazmadan edemiyor artık. Ben de not aldığım konulardan biri olan tip kontrolünü ( Type Checking) ele almaya çalışacağım. typeof, GetType, is ve as kavramların inceleyeceğiz. Şahsım adına kullandığım yapıların sadece kullanımını değil; nerelerde ve ne zaman kullanılır, alternatifleri nelerdir gibi soruların cevaplarını bulmaya çalışıyorum. Ortaya çıkan şeyleri de elimden geldiğince paylaşmak istiyorum. Bu da bu şekilde orta çıkan bir yazı oldu.  Bu kısa girişten sonra yazıya başlayalım.
   
     typeof: Bir keyword olup obje veya değerin tipini almayı sağlar, ancak genelde objenin tipini belirlemede kullanılır. Derlenme zamanında tipi belirler. Bir obje oluşturarak tipin değerini direkt belirler. Parametre alır.

   GetType: Bir metod olup obje veya değerin tipini almayı sağlar, ancak genelde veri tipini belirlemede kullanılır. Çalışma zamanında tipi belirler. Çalışma zamanında kullanıldığından dolayı reflection ile çok sık kullanılır. typeof tersine ikinci bir obje oluşturarak değerin tipini belirler. Parametre almaz.

   is: Bir keyword olup genel olarak kullanıcıdan gelen bir değer veya objenin, başka bir objeye ait olup olmadığını kontrol eder. bool değer döner.

   as: Bir keyword olup aslında tip kontrolünden ziyade bir cast işlemi yapar. Eğer cast işlemi başarılı değilse objeye null değeri atar. is ile arasında aşağıdaki gibi bir bağlantı vardır.
expression as type => expression is type ? (type)expression : (type) null


       Şimdi de tüm bunları kodlamak gerekirse;
Type typeTypeOf = typeof(string);
Console.WriteLine("TypeOf: {0}", typeTypeOf);

var value = "string";
Type typeGetType = value.GetType();
Console.WriteLine("GetType: {0}", typeGetType);

var str = new String("string");
if (str is String)
{
      Console.WriteLine("is: {0}", (String)str);
}

var undetermined = str as String;
if (undetermined != null)
{
    Console.WriteLine("as: {0}", str);
}

     Bu yazının ortaya çıkmasını sağlayan ve daha ayrıntılı faydalanacağınız link ve as'in kullanımını daha ayrıntılı ele alan link de burada. Kullandıklarımızı neden kullandığımızı bilmek dileğiyle. Selametle.

Hiç yorum yok:

Yorum Gönder