Почему в Enumerable.Any() отдается приоритет свойству Count выше чем MoveNext()?
Почему в теле метода Enumerable.Any<TSource>
сначала пытаются достать свойство Count
(внутри метода TryGetNonEnumeratedCount
) и если не получается, то возвращается MoveNext()
который как раз возвращает нужное нам bool значение. Почему бы сразу не сделать условный return MoveNext()
? Какие преимущества у такого подхода? В IL никакой разницы между вызовом get
у свойства и вызова метода нет, оба дёргаются за счет callvirt
Источник: Stack Overflow на русском