Sto avendo un List<T>
e voglio ottenere i valori indietro nell'ordine inverso. Quello che non voglio è invertire la lista stessa.Utilizzare in modo esplicito il metodo di estensione
Questo sembra non avere alcun problema poiché c'è un metodo di estensione Reverse()
per IEnumerable<T>
che fa esattamente quello che voglio.
Il mio problema è che esiste anche un metodo Reverse()
per List<T>
che inverte l'elenco stesso e restituisce void.
So che ci sono un sacco di modi per attraversare l'elenco in ordine inverso, ma la mia domanda è:
Come faccio a dire al compilatore che voglio utilizzare il metodo di estensione con lo stesso nome?
var list = new List<int>(new [] {1, 2, 3});
DumpList(list.Reverse()); // error
Questo è secondo me la migliore risposta alla mia domanda in modo da sto dando i crediti. – VVS
A meno che non si digiti lo spazio dei nomi completo e il nome della classe, entrambe le soluzioni presentano lo stesso potenziale problema di importazione dello spazio dei nomi. Quindi nessuno dei due è davvero migliore, è solo una questione di preferenza. –
Questo caso è molto meno probabile (e, come hai detto tu, puoi qualificare pienamente il nome). In generale, i metodi di estensione sono pensati per essere sovraccaricati e per essere meno preferiti dei metodi di istanza. Se si sta tentando di sopprimere la risoluzione di sovraccarico del metodo di estensione, è meglio non utilizzare la sintassi del metodo di estensione. –