SORU
26 Mart 2009, PERŞEMBE


'#; C' operatör performans

Hızlı performans gerektiren bir program var. Kendi iç döngüsü içinde, belli bir arabirimden devralır olup olmadığını görmek için bir nesne türü test etmem lazım.

Bunu yapmanın bir yolu, CLR-dahili tür denetleme işlevi ile olur. En şık yöntemi vardır muhtemelen 'olmak' anahtar kelime:

if (obj is ISpecialType)

Başka bir yaklaşım temel sınıf kendi sanal benim GetType vermek olacaktır() önceden tanımlanmış numaralandırma değeri (benim durumumda, aslında, ben sadece bir bool gerekir). bir döndüren fonksiyon Bu yöntem hızlı, ama daha az şık olurdu.

IL bir talimat için özellikle '' anahtar kelime, ama yerli montaj çevrildi hızlı çalıştırır anlamına gelmez. olduğunu duydum Herkesin performans '' karşı başka bir yöntemi? biraz fikir paylaşabilir

GÜNCELLEME:Tüm bilinçli cevaplar için teşekkürler! Bunun gibi bir kaç yararlı noktaları yaymak arasında cevaplar: Andrew nokta", " otomatik olarak gerçekleştiren bir atama önemli ama performans topladığı veriler ile İkili Evham ve Ian da son derece yararlı. Eğer cevaplar birini içerecek şekilde düzenlenmiş olsaydı çok iyi olurdutümbu Bilgi.

CEVAP
26 Mart 2009, PERŞEMBE


is kullanarak, bu tür kontrol sonra, bu tür atama durumunda performans zarar verebilir. is aslında herhangi bir sonraki döküm gereksiz yani denetleme türü için nesne çevirir.

Neyse döküm yapacaksanız, burada daha iyi bir yaklaşım

ISpecialType t = obj as ISpecialType;

if (t != null)
{
    // use t here
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • case LianLi

    case LianLi

    28 Mayıs 2010
  • Vsauce

    Vsauce

    30 Temmuz 2007