¿Cuál es la diferencia entre Directory.EnumerateFiles vs Directory.GetFiles?

¿Cuál es la diferencia entre Directory.EnumerateFiles vs GetFiles ?

Obviamente uno devuelve una matriz y el otro devuelve Enumerable.

¿Algo más?

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 y eso implica la ejecución diferida. Solo está disponible en Fx4 y arriba.

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.