Gibt es bei der Verwendung ToList()
Auswirkungen auf die Leistung, die berücksichtigt werden müssen?
Ich habe eine Abfrage geschrieben, um Dateien aus einem Verzeichnis abzurufen. Dies ist die Abfrage:
string[] imageArray = Directory.GetFiles(directory);
Da ich jedoch List<>
stattdessen gerne arbeite , habe ich mich entschlossen, ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Gibt es also Auswirkungen auf die Leistung, die bei der Entscheidung für eine solche Konvertierung berücksichtigt werden sollten - oder nur bei der Verarbeitung einer großen Anzahl von Dateien? Ist das eine vernachlässigbare Umwandlung?
Add
oder Remove
, würde ich es als IEnumerable<T>
(oder noch besser var
)
EnumerateFiles
statt GetFiles
, so dass nur ein Array erstellt wird.
GetFiles(directory)
, wie es derzeit in .NET implementiert ist, tut es so ziemlich new List<string>(EnumerateFiles(directory)).ToArray()
. So GetFiles(directory).ToList()
erstellt eine Liste, erstellt einen Array aus , dass, erstellt dann wieder eine Liste. Wie 2kay sagt, sollten Sie es vorziehen, EnumerateFiles(directory).ToList()
hier zu tun .
List<T>
für ein ,T[]
wenn es der Code logischer / lesbar / verwaltbar macht (es sei denn natürlich die Umwandlung wurde verursacht spürbare Performance - Probleme in diesem Fall ich würde re- besuche es, denke ich).