Lors de l'utilisation ToList()
, y a-t-il un impact sur les performances qui doit être pris en compte?
J'écrivais une requête pour récupérer des fichiers à partir d'un répertoire, qui est la requête:
string[] imageArray = Directory.GetFiles(directory);
Cependant, comme j'aime travailler avec à la List<>
place, j'ai décidé de mettre en place ...
List<string> imageList = Directory.GetFiles(directory).ToList();
Alors, y a-t-il une sorte d'impact sur les performances à prendre en compte au moment de décider de faire une conversion comme celle-ci - ou à ne prendre en compte que lorsqu'il s'agit d'un grand nombre de fichiers? Est-ce une conversion négligeable?
Add
ou Remove
, je le laisserais comme IEnumerable<T>
(ou même mieux var
)
EnumerateFiles
au lieu de GetFiles
, donc un seul tableau sera créé.
GetFiles(directory)
, comme il est implémenté dans .NET actuellement, à peu près le fait new List<string>(EnumerateFiles(directory)).ToArray()
. Alors GetFiles(directory).ToList()
crée une liste, crée un tableau à partir de cela, puis crée à nouveau une liste. Comme le dit 2kay, vous devriez préférer le faire EnumerateFiles(directory).ToList()
ici.
List<T>
en faveur d'unT[]
si cela rend le code plus logique / lisible / maintenable (à moins bien sûr que la conversion ne cause des problèmes de performances notables , auquel cas je re visitez-le je suppose).