Відповіді:
Залежить від платформи. У 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".