¿Cuál es la diferencia entre File.ReadLines () y File.ReadAllLines ()?

Tengo una consulta sobre File.ReadLines () y File.ReadAllLines (). ¿Cuál es la diferencia entre ellos? Tengo un archivo de texto donde contiene datos en fila. File.ReadAllLines() devuelve una matriz y usa File.ReadLines().ToArray(); también puedo obtener el mismo resultado. Entonces, ¿hay alguna diferencia de rendimiento relacionada con estos métodos?

 string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray(); 

O

 string[] lines = File.ReadAllLines("C:\\mytxt.txt"); 

    ¿Hay alguna diferencia de rendimiento relacionada con estos métodos?

    SÍ, hay una diferencia

    File.ReadAllLines() método File.ReadAllLines() lee todo el archivo a la vez y devuelve la matriz de cadena [], por lo que lleva tiempo trabajar con archivos de gran tamaño y no se recomienda ya que el usuario debe esperar hasta que se devuelva toda la matriz.

    File.ReadLines() devuelve un IEnumerable y no lee todo el archivo de una vez, por lo que es realmente una mejor opción cuando se trabaja con archivos de gran tamaño.

    Desde MSDN :

    Los métodos ReadLines y ReadAllLines difieren de la siguiente manera:

    Cuando utiliza ReadLines, puede comenzar a enumerar la colección de cadenas antes de que se devuelva toda la colección; cuando usa ReadAllLines, debe esperar a que se devuelva todo el conjunto de cadenas antes de poder acceder a la matriz. Por lo tanto, cuando trabaja con archivos muy grandes, ReadLines puede ser más eficiente.

    Ejemplo 1: File.ReadAllLines()

     string[] lines = File.ReadAllLines("C:\\mytxt.txt"); 

    Ejemplo 2: File.ReadLines()

     foreach (var line in File.ReadLines("C:\\mytxt.txt")) { //Do something } 

    File.ReadLines método File.ReadLines devuelve IEnumerable . Pero File.ReadAllLines devuelve string[] Si lee un archivo grande, mejor utilice el método File.ReadLines . debido a que lee línea tras línea del archivo, no lee todo el archivo en la string[] que requiere mucha memoria. MSDN

    ReadAllLines

    Abre un archivo de texto, lee todas las líneas del archivo y luego cierra el archivo.

    Si tiene archivos pequeños o tiene que procesar el archivo completo a la vez, utilícelo ya que lee completamente el archivo, lo que significa que el archivo completo está en su memoria. En el caso de archivos grandes, puede ralentizar el rendimiento.

    ReadLines

    Con el método File.ReadLines, puede comenzar a enumerar la colección de cadenas antes de que se devuelva toda la colección.

    Es útil si necesita procesar el archivo en fragmentos (no todo el archivo a la vez).

    Comentarios establecidos en MSDN :

    Los métodos ReadLines y ReadAllLines difieren de la siguiente manera:

    Cuando utiliza ReadLines, puede comenzar a enumerar la colección de cadenas antes de que se devuelva toda la colección; cuando usa ReadAllLines, debe esperar a que se devuelva todo el conjunto de cadenas antes de poder acceder a la matriz. Por lo tanto, cuando trabaja con archivos muy grandes, ReadLines puede ser más eficiente.

    Aquí hay más detalles y una demostración de comparación disponible