Разница между "\ n" и окружающей средой. NewLine - PullRequest
187 голосов
/ 19 июня 2009

В чем разница между двумя, если таковые имеются (относительно .Net)?

Ответы [ 7 ]

186 голосов
/ 19 июня 2009

Зависит от платформы. В Windows это на самом деле "\ r \ n".

Из MSDN:

Строка, содержащая "\ r \ n" для не-Unix-платформы или строка содержит "\ n" для платформ Unix.

141 голосов
/ 05 апреля 2014

Точная реализация 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)

67 голосов
/ 19 июня 2009

Как уже упоминалось, Environment.NewLine возвращает специфичную для платформы строку для начала новой строки, которая должна быть:

  • "\r\n" (\ u000D \ u000A) для Windows
  • "\n" (\ u000A) для Unix
  • "\r" (\ u000D) для Mac (если такая реализация существовала)

Обратите внимание, что при записи в консоль Environment.NewLine не является строго обязательным. Консольный поток при необходимости переведет "\n" в соответствующую последовательность новой строки.

22 голосов
/ 19 июня 2009

Environment.NewLine вернет символ новой строки для соответствующей платформы, на которой работает ваш код

вы найдете это очень полезным при развертывании своего кода в Linux на Mono framework

8 голосов
/ 19 июня 2009

Из документов ...

Строка, содержащая "\ r \ n" для не-Unix-платформы или строка содержит "\ n" для платформ Unix.

4 голосов
/ 19 июня 2009

Вы можете столкнуться с проблемами при попытке отобразить многострочное сообщение, разделенное "\ r \ n".

Всегда полезно делать что-то стандартным образом и использовать Environment.NewLine

4 голосов
/ 19 июня 2009

Environment.NewLine выдаст «\ r \ n» при запуске в Windows. Если вы генерируете строки для сред на основе Unix, вам не нужен символ "\ r".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...