Respostas:
Depende da plataforma. No Windows, é realmente "\ r \ n".
Do MSDN:
Uma sequência contendo "\ r \ n" para plataformas não Unix ou uma sequência contendo "\ n" para plataformas Unix.
Environment.NewLine
é, \r\n
mas \n
também é chamado de "nova linha". Por que eles não chamaram o último pelo seu nome mais conhecido "feed de linha" e eliminaram a confusão? Eles poderiam ter usado \l
também.
Implementação exata do Environment.NewLine
código fonte:
A implementação no .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";
}
}
A implementação no .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
}
}
fonte (pol System.Private.CoreLib
)
public static string NewLine => "\r\n";
fonte (pol System.Runtime.Extensions
)
Como outros já mencionaram, Environment.NewLine
retorna uma string específica da plataforma para iniciar uma nova linha, que deve ser:
"\r\n"
(\ u000D \ u000A) para Windows"\n"
(\ u000A) para Unix"\r"
(\ u000D) para Mac (se essa implementação existir)Observe que, ao gravar no console, o Environment.NewLine não é estritamente necessário. O fluxo do console será convertido "\n"
para a sequência de nova linha apropriada, se necessário.
\n
Dos documentos ...
Uma sequência contendo "\ r \ n" para plataformas não Unix ou uma sequência contendo "\ n" para plataformas Unix.
Environment.NewLine fornecerá "\ r \ n" quando executado no Windows. Se você está gerando strings para ambientes baseados em Unix, não deseja o "\ r".