c# - net - ¿Cuál es la diferencia entre Directory.EnumerateFiles vs Directory.GetFiles?
for each file in folder vb net (3)
¿Cuál es la diferencia entre Directory.EnumerateFiles
vs GetFiles
?
Obviamente uno devuelve una matriz y el otro devuelve Enumerable.
¿Algo más?
Al utilizar EnumerateFiles, toda la velocidad se pierde si está utilizando. .Last
. Esto tiene sentido, por supuesto, porque para llegar al último archivo, tendrá que enumerar todos los archivos, luego tomar el último.
Sin embargo, usar .First
o .FirstOrDefault
vuelve muy rápido, ya que simplemente toma el primer elemento y continúa.
De los documentos :
Los métodos EnumerateFiles y GetFiles difieren de la siguiente manera: Cuando utiliza EnumerateFiles, puede comenzar a enumerar la colección de nombres antes de que se devuelva toda la colección; cuando usa GetFiles, debe esperar a que se devuelva toda la matriz de nombres para poder acceder a la matriz. Por lo tanto, cuando trabaja con muchos archivos y directorios, EnumerateFiles puede ser más eficiente.
Básicamente, EnumerateFiles
devuelve un IEnumerable
que se puede evaluar de forma perezosa un tanto, mientras que GetFiles
devuelve una string[]
que debe rellenarse por completo antes de que pueda volver.
EnumerateFiles
devuelve IEnumerable<string>
y eso implica la ejecución diferida. Solo está disponible en Fx4 y arriba.