Diferencia entre “\ n” y Environment.NewLine

¿Cuál es la diferencia entre dos, si hay alguno (con respecto a .Net)?

Depende de la plataforma. En Windows, en realidad es “\ r \ n”.

Desde MSDN:

Una cadena que contiene “\ r \ n” para plataformas que no son Unix, o una cadena que contiene “\ n” para plataformas Unix.

Implementación exacta de Environment.NewLine partir del código fuente:

La implementación en .NET 4.6.1:

 /*===================================NewLine==================================== **Action: A property which returns the appropriate newline string for the given ** platform. **Returns: \r\n on Win32. **Arguments: None. **Exceptions: None. ==============================================================================*/ public static String NewLine { get { Contract.Ensures(Contract.Result() != null); return "\r\n"; } } 

fuente


La implementación en .NET Core:

 /*===================================NewLine==================================== **Action: A property which returns the appropriate newline string for the ** given platform. **Returns: \r\n on Win32. **Arguments: None. **Exceptions: None. ==============================================================================*/ public static String NewLine { get { Contract.Ensures(Contract.Result() != null); #if !PLATFORM_UNIX return "\r\n"; #else return "\n"; #endif // !PLATFORM_UNIX } } 

fuente (en System.Private.CoreLib )

 public static string NewLine => "\r\n"; 

fuente (en System.Runtime.Extensions )

Como han mencionado otros, Environment.NewLine devuelve una cadena específica de la plataforma para comenzar una nueva línea, que debería ser:

  • "\r\n" (\ u000D \ u000A) para Windows
  • "\n" (\ u000A) para Unix
  • "\r" (\ u000D) para Mac (si tal implementación existió)

Tenga en cuenta que al escribir en la consola, Environment.NewLine no es estrictamente necesario. La secuencia de la consola traducirá "\n" a la secuencia apropiada de la nueva línea, si es necesario.

Environment.NewLine devolverá el carácter de nueva línea para la plataforma correspondiente en la que se ejecuta el código

lo encontrará muy útil cuando despliegue su código en linux en el marco Mono

De los documentos …

Una cadena que contiene “\ r \ n” para plataformas que no son Unix, o una cadena que contiene “\ n” para plataformas Unix.

Puede tener problemas cuando intenta mostrar mensajes de varias líneas separados por “\ r \ n”.

Siempre es una buena práctica hacer las cosas de forma estándar y usar Environment.NewLine

Environment.NewLine dará “\ r \ n” cuando se ejecute en Windows. Si está generando cadenas para entornos basados ​​en Unix, no desea la “\ r”.