2009-06-18 2 views

ответ

148

В зависимости от платформы. В Windows это «\ r \ n».

Из MSDN:

строка, содержащая "\ г \ п" для не-Unix платформ, или строка , содержащих "\ N" для Unix платформ.

+5

Какие UNIX платформы .NET делает запуск в Microsoft поместить в свой документ? (Я имею в виду, часть из Mono.) – Jack

+6

@Jack Вы можете написать файл, который будет открыт в платформе Unix. Или отправить текст в пакет, который будет получен на платформе unix. И через несколько месяцев .net будет работать на платформах Unix. Он уже начался –

8

От docs ...

строка, содержащая "\ г \ п" для не-Unix платформ, или строка , содержащих "\ N" для Unix платформ.

+0

+1 для ссылки – JeffH

3

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

18

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

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

63

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

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

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

+0

Реализация Mac существует. Просто Моно. Бежит на что угодно. – Dykam

+14

Просто записка, которая была бы старыми маками; новые (OSX) macs используют '\ n' –

+1

@ Dykam, да, но он работает очень медленно, как на моем HP48gx – cod3monk3y

4

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

Это всегда хорошая практика, чтобы делать вещи стандартным способом, а также использовать Environment.NewLine

92

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

+11

Кто-нибудь еще ожидал такого простого кода? : D – developerbmw

+4

Исходный код никогда не лежит :) – aloisdg

+4

yeah :) По какой-то причине я ожидал, что реализация .NET станет некоторой сложной функцией – developerbmw

Смежные вопросы