Итак, я знаю, что Find()
- это только метод List<T>
, тогда как First()
является расширением для любого IEnumerable<T>
. Я также знаю, что First()
вернет первый элемент, если параметр не передан, тогда как Find()
выдаст исключение. Наконец, я знаю, что First()
выдаст исключение, если элемент не найден, тогда как Find()
вернет значение по умолчанию типа.
Я надеюсь, что это путает насчет того, что я на самом деле спрашиваю. Это вопрос компьютерной науки и касается этих методов на вычислительном уровне. Я понял, что расширения IEnumerable<T>
не всегда работают так, как можно было бы ожидать под капотом. Итак, здесь Q, и я имею в виду от точки "близко к металлу": в чем разница между Find()
и First()
?
Вот некоторый код для предоставления базовых предположений для работы по этому вопросу.
var l = new List<int> { 1, 2, 3, 4, 5 };
var x = l.First(i => i == 3);
var y = l.Find(i => i == 3);
Существует ли какая-либо фактическая вычислительная разница между тем, как First()
и Find()
обнаруживают свои значения в приведенном выше коде?
Примечание. Давайте теперь будем игнорировать такие вещи, как AsParallel()
и AsQueryable()
.