'#; 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
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
}
Büyük performans 32 ve 64 bit için der...
Kısayol "-atama ve; ( = | ) Java ...
Ne kadar büyük bir MySQL veritabanı dü...
Varlık içinde Operatör gibi Çerçeve?...
Neden't use 'kilit deyiminin...