Рассмотрим следующее:
bool invalidChildren = this.Children.Any(c => !c.IsValid());
Этот класс имеет коллекцию дочерних объектов, у которых есть метод IsValid()
. Предположим, что метод IsValid()
требует много ресурсов процессора. После обнаружения первого дочернего объекта, где IsValid()
равен false
, теоретически обработка может быть остановлена, поскольку результат никогда не станет истинным. Останавливает ли LINQ для объектов фактически оценку после первого IsValid() = false
(как логическое И) или продолжает вычислять все дочерние объекты?
Очевидно, я мог бы просто поместить это в цикл foreach и разбить первый недопустимый результат, но мне было просто интересно, достаточно ли умна LINQ для объектов, чтобы делать это тоже.
EDIT:
Спасибо за ответы, по какой-то причине я не думал сам искать его на MSDN.