Birçok kişinin aşağıdaki kodu kullandığını gördüm:
Type t = typeof(obj1);
if (t == typeof(int))
// Some code here
Ama bunu sizin de yapabileceğinizi biliyorum:
if (obj1.GetType() == typeof(int))
// Some code here
Ya da bunu:
if (obj1 is int)
// Some code here
Şahsen, sonuncusunun en temizi olduğunu düşünüyorum, ama kaçırdığım bir şey mi var? Hangisini kullanmak en iyisi, yoksa bu kişisel bir tercih mi?
Türü derleme zamanında almak istediğinizde typeof
kullanın. Türü çalıştırma zamanında almak istediğinizde GetType
kullanın. Bir döküm yaptığı ve çoğu durumda değişkeni zaten dökümlediğiniz için is
kullanmanız gereken nadir durumlar vardır.
Göz önünde bulundurmadığınız dördüncü bir seçenek daha vardır (özellikle de nesneyi bulduğunuz türe dökecekseniz); bu da as
kullanmaktır.
Foo foo = obj as Foo;
if (foo != null)
// your code here
Bu yaklaşımda yalnızca bir döküm kullanılır:
if (obj is Foo)
Foo foo = (Foo)obj;
iki** gerektirir.
Ne yaptığıma bağlı. Eğer bir bool değerine ihtiyacım varsa (örneğin, bir int değerine döküm yapıp yapmayacağımı belirlemek için), is
kullanırım. Eğer gerçekten bir nedenle tipe ihtiyacım varsa (örneğin, başka bir metoda aktarmak için) GetType()
kullanırım.