2009-06-18 16 views

Respuesta

148

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

De MSDN:

Una cadena que contiene "\ r \ n" para plataformas no Unix, o una cadena que contienen "\ n" para plataformas Unix.

+5

Qué plataforma UNIX qué .NET de ejecución para Microsoft puso en su doc? (Es decir, una parte de Mono.) – Jack

+6

@Jack Podría estar escribiendo en un archivo que se abrirá en la plataforma Unix. O enviando texto en paquete que será recibido por una plataforma de Unix. Y en unos pocos meses .net se ejecutará en plataformas Unix. Ya ha comenzado –

8

Desde el docs ...

Una cadena que contiene "\ r \ n" para plataformas no Unix, o una cadena que contienen "\ n" para plataformas Unix.

+0

+1 para el enlace – JeffH

3

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

18

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

encontrará esto muy útil cuando se implementa el código en Linux en el Mono marco

63

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

  • "\r\n" (\ u000d \ u000A) para Windows
  • "\n" (\ u000A) para Unix
  • "\r" (\ u000d) para Mac (si existiera dicha aplicación)

Tenga en cuenta que cuando se escribe 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.

+0

La implementación de Mac existe. Solo mono Se ejecuta en cualquier cosa. – Dykam

+14

Solo una nota, que serían viejos Mac; los nuevos (OSX) macs usan '\ n' –

+1

@Dykam, sí, pero funciona muy lento como en mi HP48gx – cod3monk3y

4

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

Siempre es una buena práctica para hacer las cosas de una manera estándar, y utilizar Environment.NewLine

92

aplicación exacta de Environment.NewLine a 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<String>() != null); 
     return "\r\n"; 
    } 
} 

source


La implementación en.Core NET:

/*===================================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 
    } 
} 

source (en System.Private.CoreLib)

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

source (en System.Runtime.Extensions)

+11

¿Alguien más esperaba un código tan simple? : D – developerbmw

+4

El código fuente nunca miente :) – aloisdg

+4

sí :) Por alguna razón esperaba que la implementación de .NET fuera una función enormemente complicada – developerbmw