¿El método de extensión .Last()
tiene en cuenta si se invoca en un IList
? Me pregunto si hay una diferencia significativa entre el rendimiento siguientes:¿Llamar .Last() en un IList itera toda la lista?
IList<int> numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int lastNumber1 = numbers.Last();
int lastNumber2 = numbers[numbers.Count-1];
La intuición me dice que la primera alternativa es O (n), pero el segundo es O (1). ¿Es .Last()
"inteligente" lo suficiente como para tratar de convertirlo a un IList
?
Gracias. Lo que realmente aprendí es que estoy loco por no haber instalado .NET Reflector, después de todo este tiempo. :) –