Quelle est la différence entre Directory.EnumerateFiles
vs GetFiles
?
Évidemment, l'un retourne un tableau et l'autre retourne Enumerable.
Rien d'autre?
De les docs :
Les méthodes EnumerateFiles et GetFiles diffèrent comme suit: Lorsque vous utilisez EnumerateFiles, vous pouvez commencer à énumérer la collection de noms avant que la collection entière ne soit renvoyée. Lorsque vous utilisez GetFiles, vous devez attendre que le tableau complet de noms soit renvoyé avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec de nombreux fichiers et répertoires, EnumerateFiles peut être plus efficace.
Donc, fondamentalement, EnumerateFiles
renvoie un IEnumerable
qui peut être évalué quelque peu paresseusement, alors que GetFiles
renvoie un string[]
qui doit être entièrement rempli avant de pouvoir revenir.
EnumerateFiles
retourne IEnumerable<string>
et cela implique une exécution différée. Il est uniquement disponible à partir de Fx4.
Lorsque vous utilisez EnumerateFiles, toute la vitesse est perdue si vous utilisez ensuite .Last
. Cela a du sens, car pour accéder au dernier fichier, il faudra énumérer tous les fichiers, puis récupérer le dernier.
Cependant, en utilisant .First
ou .FirstOrDefault
devient très rapide, car il saisit simplement le premier élément et passe à autre chose.