OfType() nasıl çalışır?OfType <T>() Nasıl Çalışır?
Neler olup bittiğini, ancak LINQ sağlayıcısının, belirtilen türle eşleşen tüm nesneleri nasıl alacağını tam olarak nasıl bildiğine dair this link numarasını okudum. IQueryable<T>
"zincirler" yukarı isteklerini biliyorum ve GetEnumerator()
çağrıldığında değerlendirir (sağ?).
Özellikle, çerçevenin hızlı bir şekilde nasıl karşılaştırılacağını bilmek ister misiniz?
public IEnumerable<TResult> OfType<TResult>()
where TResult : class
{
foreach (TItem item in this.InnerList)
{
TResult matchItem = item as TResult;
if (matchItem != null)
{
yield return matchItem;
}
}
}
bu en iyi uygulama mı: I (özelliklerin bu tür desteklemez 2.0 beri) böyle gitti bir .NET 2.0 projede bir yöntem yazdı?
DÜZENLEME: Bu OfType<T>()
Benim asıl sorun o hızlı olmasıdır.
Yani '' 'kullanmak daha hızlıdır ve daha sonra değer türleri dahil olmanız nedeniyle döküm ya da budur? Kullanmayı düşündüm ve sonra boşluğun daha hızlı olduğunu kontrol ettim? – TheCloudlessSky
Belirli derleyici optimizasyonları nedeniyle farkın alakasız olması mümkündür. –
@TheCloudlessSky: Metot, yalnızca ref türleri ile uğraşmak zorunda kalsaydı, o zaman yaptığınız gibi "as'/test-for-null" kombinasyonunu kullanırdım. 'Is'/cast ve' as'/test-for-null kullanımı arasındaki hız farkı ihmal edilebilir, ancak bu mikro optimizasyon seviyesi sizin için önemliyse, o zaman bazı kıyaslamalar yapmanızı öneririm. – LukeH