Разница в C # между First () и Find ()

Итак, я знаю, что Find () - это только List метод, тогда как First () является расширением для любого IEnumerable . Я также знаю, что First () вернет первый элемент, если параметр не передан, тогда как Find () вызовет исключение. Наконец, Я знаю, что First () вызовет исключение, если элемент не найден, тогда как Find () вернет значение типа по умолчанию.

Я надеюсь, что это устранит путаницу по поводу что я на самом деле спрашиваю. Это вопрос информатики, и он касается этих методов на вычислительном уровне. Я понял, что расширения IEnumerable не всегда работают так, как можно было бы ожидать изнутри. Итак, вот 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 () на данный момент.

52
задан gdoron 10 January 2012 в 06:47
поделиться