FuncTObject, bool oder PredicateTObject?

8

Ich habe immer wieder API (insbesondere im .NET Framework) gesehen, die Func<TObject, bool> verwendet, wenn Predicate<TObject> scheinbar eine vollkommen verantwortungsvolle Option ist. Welche guten Gründe könnte ein API-Designer dafür haben?

    
Michael Smith 18.04.2009, 09:15
quelle

3 Antworten

7

In LINQ wird Func<T, bool> für Dinge wie Where verwendet, so dass die andere Überladung, die sowohl den Index als auch das Element übernimmt, konsistent ist:

%Vor%

Persönlich denke ich, dass der Name Predicate beschreibender ist, also würde I ihn in Situationen verwenden, in denen es kein Konsistenzproblem wie das obige gibt. Wohlgemerkt, es gibt etwas, das man sagen muss, wenn man nur über die Delegiertypen Action und Func wissen muss ...

    
Jon Skeet 18.04.2009, 09:21
quelle
2

Konsistenz mit dem Rest von LINQ?

(Die "Anomalie" wurde bemerkt, aber mit anonymen Delegaten und Lambda-Funktionen macht es keinen Unterschied, so dass Sie sich fast nie des Unterschieds bewusst sein müssen.)

    
Richard 18.04.2009 09:19
quelle
0

Der Func & lt; & gt; Delegaten sind die "neue" Methode, um lambdas / Delegaten Methoden zuzuweisen. Es gibt jedoch nur einen handlichen Satz von Delegaten, und wenn es einen spezifischeren Delegaten gibt, der dasselbe tut, dann gehen Sie dafür.

In Ihrem Beispiel würde ich immer das Prädikat & lt; & gt; da es viel selbstdokumentierter ist (vorausgesetzt, ein Prädikat ist das, was Sie wollen)

    
Sean 18.04.2009 09:20
quelle

Tags und Links