Qual è la differenza tra due, se esiste (rispetto a .Net)?
Risposte:
Dipende dalla piattaforma. Su Windows è effettivamente "\ r \ n".
Da MSDN:
Una stringa contenente "\ r \ n" per piattaforme non Unix o una stringa contenente "\ n" per piattaforme Unix.
Environment.NewLine
è \r\n
ma \n
viene anche chiamata "nuova linea". Perché non hanno chiamato semplicemente quest'ultimo con il suo nome più noto "line feed" e hanno eliminato la confusione? Avrebbero potuto usare \l
anche.
Esatta implementazione di Environment.NewLine
dal codice sorgente:
L'implementazione in .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";
}
}
L'implementazione in .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 (in System.Private.CoreLib
)
public static string NewLine => "\r\n";
fonte (in System.Runtime.Extensions
)
Come altri hanno già detto, Environment.NewLine
restituisce una stringa specifica della piattaforma per iniziare una nuova riga, che dovrebbe essere:
"\r\n"
(\ u000D \ u000A) per Windows"\n"
(\ u000A) per Unix"\r"
(\ u000D) per Mac (se tale implementazione esisteva)Notare che quando si scrive sulla console, Environment.NewLine non è strettamente necessario. "\n"
Se necessario, il flusso della console si tradurrà nella sequenza di nuova riga appropriata.
\n
Environment.NewLine darà "\ r \ n" se eseguito su Windows. Se stai generando stringhe per ambienti basati su Unix, non vuoi il "\ r".