Если вы посмотрите на Enumerable source , вы увидите, что реализация Any
и All
довольно близка:
public static bool Any(this IEnumerable source, Func predicate) {
if (source == null) throw Error.ArgumentNull("source");
if (predicate == null) throw Error.ArgumentNull("predicate");
foreach (TSource element in source) {
if (predicate(element)) return true;
}
return false;
}
public static bool All(this IEnumerable source, Func predicate) {
if (source == null) throw Error.ArgumentNull("source");
if (predicate == null) throw Error.ArgumentNull("predicate");
foreach (TSource element in source) {
if (!predicate(element)) return false;
}
return true;
}
ни один способ, чтобы один метод был значительно быстрее, чем другой, поскольку единственное различие заключается в булевом отрицании, поэтому предпочитают читаемость по сравнению с ложным выигрышем.