Tengo un List<T>
y quiero obtener los valores en orden inverso. Lo que no quiero es invertir la lista en sí.Explícitamente use el método de extensión
Esto no parece ningún problema ya que hay un método de extensión Reverse()
para IEnumerable<T>
que hace exactamente lo que quiero.
Mi problema es que también hay un método Reverse()
para List<T>
que invierte la lista y devuelve el vacío.
Sé que hay un montón de maneras de recorrer la lista en orden inverso, pero mi pregunta es:
¿Cómo le digo al compilador que quiero usar el método de extensión con el mismo nombre?
var list = new List<int>(new [] {1, 2, 3});
DumpList(list.Reverse()); // error
Esta es mi humilde opinión la mejor respuesta a mi pregunta, así que estoy dando los créditos. – VVS
A menos que escriba el espacio de nombre completo y el nombre de la clase, ambas soluciones tienen el mismo problema potencial de importación de espacio de nombres. Entonces ninguno de los dos es realmente mejor, solo es cuestión de preferencia. –
Ese caso es mucho menos probable (y, como dijiste, puedes calificar completamente el nombre). En general, los métodos de extensión están destinados a estar sobrecargados, y ser menos preferidos que los métodos de instancia. Si está tratando de suprimir la resolución de sobrecarga del método de extensión, entonces es mejor no usar la sintaxis del método de extensión. –