2009-04-18 22 views

cevap

7

, 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 ...

+0

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). –

2

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.)

+0

Evet, ama LINQ bunu neden yaptı? –

+0

Ayrıca LINQ geri kalanı ile "tutarlılık" iyi bir iyi neden olduğunu sanmıyorum. –

+0

Jon'un bir ihtimal için cevabını görün. – Richard

0

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
İlgili konular