Hızlı performans gerektiren bir programım var. İç döngülerinden birinde, belirli bir arayüzden miras alıp almadığını görmek için bir nesnenin türünü test etmem gerekiyor.
Bunu yapmanın bir yolu, CLR'nin yerleşik tür kontrol işlevi olabilir. Muhtemelen 'is' anahtar kelimesi olmanın en zarif yöntemi:
if (obj is ISpecialType)
Diğer bir yaklaşım, temel sınıfa, önceden tanımlanmış bir enum değeri döndüren kendi sanal GetType () işlevimi vermektir (benim durumumda, aslında, sadece bir bool'a ihtiyacım var). Bu yöntem hızlı ama daha az zarif olacaktır.
Özellikle 'is' anahtar kelimesi için bir IL talimatı olduğunu duydum, ancak bu, yerel derlemeye çevrildiğinde hızlı yürütüldüğü anlamına gelmez. Diğer yönteme karşı 'eşittir'in performansı hakkında bir fikir paylaşan var mı?
GÜNCELLEME: Bilgilendirilmiş tüm cevaplar için teşekkürler! Yanıtlar arasında birkaç yardımcı nokta yayılmış gibi görünüyor: Andrew'un bir oyuncu kadrosunu otomatik olarak gerçekleştirmesi 'olduğu' ile ilgili noktası çok önemli, ancak Binary Worrier ve Ian tarafından toplanan performans verileri de son derece yararlı. Cevaplardan birinin tüm bu bilgileri içerecek şekilde düzenlenmesi harika olurdu .