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