Відповіді:
Залежить від платформи. У Windows це насправді "\ r \ n".
Від MSDN:
Рядок, що містить "\ r \ n" для платформ, які не є Unix, або рядок, що містить "\ n" для платформ Unix.
Environment.NewLineє Unix, є, \r\nале \nїї також називають "новою лінією". Чому вони просто не назвали останню за її більш відомою назвою "рядок каналу" і не вирішили плутанину? Вони також могли використовувати \l.
Точна реалізація 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
}
}
джерело (в System.Private.CoreLib)
public static string NewLine => "\r\n";
джерело (в System.Runtime.Extensions)
Як уже згадували інші, Environment.NewLineповертає рядок, орієнтований на платформу, для початку нового рядка, який повинен бути:
"\r\n" (\ u000D \ u000A) для Windows"\n" (\ u000A) для Unix"\r" (\ u000D) для Mac (якщо така реалізація існувала)Зауважте, що при написанні на консоль, Environment.NewLine не є строго необхідним. При необхідності консольний потік переведе "\n"у відповідну послідовність нового рядка.
\n
З документів ...
Рядок, що містить "\ r \ n" для платформ, які не є Unix, або рядок, що містить "\ n" для платформ Unix.
Environment.NewLine дасть "\ r \ n" при запуску в Windows. Якщо ви генеруєте рядки для середовищ на базі Unix, ви не хочете "\ r".