Рассмотрим этот код:
int size = 100 * 1000 * 1000;
var emu = Enumerable.Range(0, size);
var arr = Enumerable.Range(0, size).ToArray();
когда я вызываю emu.ElementAt (размер-10) и arr.ElementAt (размер-10) и измеряю время, когда arr намного быстрее (массив равен 0,0002 с по сравнению с IEnumerable 0,59 с).
Насколько я понимаю, метод расширения ElementAt () имеет подпись
public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index)
и поскольку «источник» является IEnumerable, выполняемая логика будет аналогична - в отличие от того, что я вижу, когда к массиву обращаются напрямую.
Может кто-нибудь, пожалуйста, объясните это:)