Quelle est la différence entre Directory.EnumerateFiles et Directory.GetFiles?

Quelle est la différence entre Directory.EnumerateFiles et GetFiles ?

Évidemment, l’un retourne un tableau et l’autre retour Enumerable.

Rien d’autre?

De la documentation :

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 toute la collection ne soit renvoyée; Lorsque vous utilisez GetFiles, vous devez attendre que tout le tableau 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.

EnumerateFiles retourne donc un IEnumerable qui peut être évalué paresseusement, alors que GetFiles renvoie une ssortingng[] qui doit être entièrement remplie avant de pouvoir être GetFiles .

EnumerateFiles renvoie IEnumerable et cela implique une exécution différée. Il est uniquement disponible en Fx4 et supérieur.

Lorsque vous utilisez EnumerateFiles, toute la vitesse est perdue si vous utilisez ensuite .Last . Cela a du sens bien sûr, car pour accéder au dernier fichier, il faudra énumérer tous les fichiers, puis saisir le dernier.

Cependant, l’utilisation de .First ou .FirstOrDefault devient très rapide, car il saisit simplement le premier élément et continue.