Итак, я знаю, что 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().