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