Подтвердить что ты не робот

.NET "терминатор линии по умолчанию"?

Есть ли способ выяснить, что .NET использует в качестве "терминатора линии по умолчанию"? Например, документация для StringBuilder.AppendLine(String) говорит, что она добавляет копию указанной строки, за которой следует разделитель строк по умолчанию... ". Несколько связанных с текстом классов в .NET относятся к одной и той же концепции.

Есть ли способ программно определить, что используется в качестве ограничителя строк (во время выполнения)? Или можно с уверенностью предположить, что он всегда будет "\ r\n" для Windows-машины? Я бы предпочел не записывать это значение в свой код, если я могу его избежать.

4b9b3361

Ответ 1

StringBuilder.AppendLine будет использовать Environment.NewLine, который является "\r\n" для платформ, отличных от Unix, и "\n" для платформ Unix.

Он всегда будет "\r\n" для Windows-машины, но вы можете использовать Environment.NewLine вместо жестко заданного значения.

благодаря @Guffa для проверки этого

Ответ 2

Это код из метода StringBuilder.AppendLine(string) (с использованием .NET Reflector):

[ComVisible(false)]
public StringBuilder AppendLine(string value)
{
   this.Append(value);
   return this.Append(Environment.NewLine);
}

Как вы видите, он действительно использует свойство Environment.NewLine.

Ответ 3

В Mac новая строка была "\ r", пока они не основали свою ОС на Linux. Теперь его '\n'.