Разница между "\n" и "Environment.NewLine"

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

Ответ 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";
    }
}

source


Реализация в .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
    }
}

sourceSystem.Private.CoreLib)

public static string NewLine => "\r\n";

sourceSystem.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".