Durante l'utilizzo ToList()
, è necessario considerare un impatto sulle prestazioni?
Stavo scrivendo una query per recuperare i file da una directory, che è la query:
string[] imageArray = Directory.GetFiles(directory);
Tuttavia, poiché mi piace lavorare con List<>
, invece, ho deciso di inserire ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Quindi, c'è una sorta di impatto sulle prestazioni che dovrebbe essere considerato quando si decide di fare una conversione come questa - o solo da considerare quando si ha a che fare con un numero elevato di file? È una conversione trascurabile?
Add
o Remove
, lo lascerei come IEnumerable<T>
(o anche meglio var
)
EnumerateFiles
invece di GetFiles
, quindi verrà creato un solo array.
GetFiles(directory)
, come è attualmente implementato in .NET, praticamente new List<string>(EnumerateFiles(directory)).ToArray()
. Quindi GetFiles(directory).ToList()
crea un elenco, crea un array da quello, quindi crea nuovamente un elenco. Come dice 2kay, dovresti preferire fare EnumerateFiles(directory).ToList()
qui.
List<T>
a favore di unT[]
se rende il codice più logico / leggibile / mantenibile (a meno che, naturalmente, la conversione è stata causando notevoli problemi di prestazioni nel qual caso avrei ri- visitalo immagino).