Qual è la differenza tra Directory.EnumerateFiles vs Directory.GetFiles?

Qual è la differenza tra Directory.EnumerateFiles vs GetFiles ?

Ovviamente si restituisce un array e l’altro restituisce Enumerable.

Qualunque altra cosa?

Dai documenti :

I metodi EnumerateFiles e GetFiles differiscono come segue: Quando si utilizza EnumerateFiles, è ansible iniziare a enumerare la raccolta di nomi prima che venga restituita l’intera raccolta; quando si utilizza GetFiles, è necessario attendere la restituzione dell’intera matrice di nomi prima di poter accedere alla matrice. Pertanto, quando si lavora con molti file e directory, EnumerateFiles può essere più efficiente.

Quindi, in pratica, EnumerateFiles restituisce un object IEnumerable che può essere tranquillamente valutato un po ‘, mentre GetFiles restituisce una string[] che deve essere completamente popolata prima di poterla restituire.

EnumerateFiles restituisce IEnumerable e ciò implica l’esecuzione posticipata. È disponibile solo in Fx4 e versioni successive.

Quando si utilizza EnumerateFiles, tutta la velocità viene persa se si utilizza .Last . .Last . Questo ha senso, ovviamente, perché per arrivare all’ultimo file, sarà necessario enumerare tutti i file, quindi prendere l’ultimo.

Tuttavia, l’uso di .First o .FirstOrDefault diventa molto veloce, perché semplicemente afferra il primo object e si sposta.