Predicate<TObject>
Predicate<TObject>
görünürde tamamen sorumlu bir seçenek olduğu zaman API (özellikle .NET çerçevesinde) kullanan Func<TObject, bool>
kullandım. Bir API tasarımcısı neden iyi neden yapabilir?Func <TObject, bool> veya <TObject> Predicate?
cevap
, Func<T, bool>
Where
yüzden bunun gibi şeyler için kullanılır (bir yüklemi varsayarak istediğini) eleman yanı sıra indeksi alır diğer aşırı yük tutarlıdır:
IEnumerable<T> Where(IEnumerable<T> source, Func<T, bool> predicate)
IEnumerable<T> Where(IEnumerable<T> source, Func<T, int, bool> predicate)
Şahsen ben yukarıdaki gibi hiçbir tutarlılık sorunu olduğu yerde öylesine
ben durumlarda kullanmak istiyorum, adı
Predicate
daha açıklayıcı olduğunu düşünüyorum. Dikkat edin, sadece
Action
ve
Func
delege türleri hakkında bilmeniz gereken bir şey var ...
LINQ geri kalanı ile tutarlılık?
("anomali" kaydedilmiştir, ancak anonim delege ve lamda fonksiyonları ile bu kadar farkın farkında olması gerekir neredeyse hiç fark etmez.)
Evet, ama LINQ bunu neden yaptı? –
Ayrıca LINQ geri kalanı ile "tutarlılık" iyi bir iyi neden olduğunu sanmıyorum. –
Jon'un bir ihtimal için cevabını görün. – Richard
Func <> delegeler "yenidir "yöntemlere lambdas/delege belirtme yolu". Ancak, sadece bir dizi delegeler var ve eğer aynı şeyi yapan daha spesifik bir temsilci varsa, bunun için gidin. Hep çok daha kendi kendini belgeleyen olduğu gibi Predicate <> için gitmek istiyorum sizin örnekte
LINQ yılında- 1. Func <T>() vs Func <T> .Invoke()
- 2. Bir Expression <Func <T, bool>> nasıl bir Predicate dönüştürmek için <T>
- 3. <Func <T, string>>
- 4. <Func <T, object>>
- 5. IList <T> .FindIndex (Int32, Predicate <T>)
- 6. SQL Server KONTROLLER Predicate - <include_condition>
- 7. dönüştürme İfade İfade için <Func <T, T2, bool>><Func <T2, bool>> T
- 8. Nasıl ifade edilir? <Func<T,bool>> Expression <Func<T>>
- 9. Moq framework Func <T,T>
- 10. Dinamik İfade Oluşturma <Func<T,Y>>
- 11. Bir Tuple <string, string, Func <bool>>
- 12. Func <T> nasıl Ekspres <Func<T>> için dönüştürülür?</p> <p>bu satırların her ikisi derlemek:
- 13. C# Func için Func <T1, object> dönüştürme <T1, T2>
- 14. Böyle bir Func var <Func<T,bool>>
- 15. Bir çıkış param içeren bir Eylem <> veya Func <> alabilir miyim?
- 16. Belirsiz sayıda Func <TEntity, bool>
- 17. Bir parametre türü, Func <shui>
- 18. Autofac delege fabrikası func kullanarak <>
- 19. C# Func <> ve jenerikler
- 20. Nullable Func <T, TResult>
- 21. AutoFac en Func <T> hizmet
- 22. Dinamik olarak ayarlanmış Func <> türleri
- 23. Func <T, TResult> için? .NET'te
- 24. Ben Linq ifadede kullanmak istiyorum üyesi <code>Predicate</code> bir sınıf var, bir Func <T, bool>
- 25. Func oluşturma <IQueryable <TEntity>, IOrderedQueryable <TEntity>> dinamik olarak?
- 26. Predicate
- 27. Şu izle ifadem tutan bana gösteriyor Şu anda bir</p> <pre><code>Expression<Func<T,bool>> </code></pre> <p>bir</p> <pre><code>Expression<Func<T,object>> </code></pre> <p>dönüştürmek çalışıyorum
- 28. Özellik değeri Açıklama <Func <a1><T,TResult>>
- 29. Sonra bellek bültenleri almaz <code>where predicate</code> içeride dışarıda başvuru eklerseniz yüklemleri değil bültenleri bellek
- 30. İfade <Func <TModel, dize >> - İfade <Eylem <TModel>> "Düzenleyici" - "Ayarlayıcı"
Evet, korkarım cevap bundan daha iyi olmayacak. Saflık açısından bir çeşit kod bürokrasisi kazandı. (Örneğin, tutarlılık olmasına rağmen her zaman öntanımlı kullanılmalıdır). –