В чем разница между двумя, если они есть (по отношению к .Net)?
Разница между "\n" и "Environment.NewLine"
Ответ 1
Зависит от платформы. В Windows это "\ r\n".
Из MSDN:
Строка, содержащая "\ r\n" для не-Unix-платформы или строки содержащий "\n" для платформ Unix.
Ответ 2
Точная реализация Environment.NewLine
из исходного кода:
Реализация в .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";
}
}
Реализация в .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
}
}
source (в System.Private.CoreLib
)
public static string NewLine => "\r\n";
source (в System.Runtime.Extensions
)
Ответ 3
Как уже упоминалось, Environment.NewLine
возвращает строку, специфичную для платформы, для начала новой строки, которая должна быть:
-
"\r\n"
(\ u000D\u000A) для Windows -
"\n"
(\ u000A) для Unix -
"\r"
(\ u000D) для Mac (если такая реализация существует)
Обратите внимание, что при записи в консоль Environment.NewLine строго не требуется. Консольный поток преобразует "\n"
в соответствующую последовательность новой строки, если необходимо.
Ответ 4
Environment.NewLine
вернет символ новой строки для соответствующей платформы, на которой работает ваш код
вы обнаружите, что это очень полезно при развертывании вашего кода в linux на Mono framework
Ответ 5
Из docs...
Строка, содержащая "\ r\n" для не-Unix-платформы или строки содержащий "\n" для платформ Unix.
Ответ 6
У вас могут возникнуть проблемы при попытке отображения многострочного сообщения, разделенного "\ r\n".
Это всегда хорошая практика, чтобы делать вещи стандартным образом и использовать Environment.NewLine
Ответ 7
Environment.NewLine будет выдавать "\ r\n" при запуске в Windows. Если вы создаете строки для сред, основанных на Unix, вы не хотите "\ r".