Фактические символы, используемые для новой строки, отличаются от одной платформы к другой. Некоторые системы используют символ 13
для обозначения новой строки, некоторые используют 10
, а некоторые, например Windows, используют оба.
Технически символ 13
должен означать возврат каретки (верните печатающую головку принтера в левую часть страницы), поэтому его часто называют CR
. Помните, что на заре вычислительной техники принтеры использовались в качестве терминалов, а не видеоэкранов. Таким образом, ближайший эквивалент CR
на видеотерминале - курсор вернется к началу текущей строки, но не перейдет к следующей строке.
Символ 10
означает перевод строки (LF
), что означает продвижение (то есть подачу) бумаги на одну строку, чтобы печатающая головка была готова к печати на следующей строке. Ближайшим эквивалентом перевода строки на видеотерминале является перемещение курсора вниз на следующую строку, но удержание его в той же позиции x.
Итак, имея в виду эти две вещи, если вы хотите начать печатать в начале следующей строки, вам нужно будет сделать обе вещи. Вам необходимо перейти к следующей строке на странице И вернуться к началу строки, следовательно, CRLF
, два символа.
Предположительно, некоторые системные дизайнеры считали слишком расточительным использование двух символов для каждой новой строки, когда добавленный нюанс редко требовался для компьютеров с видеодисплеями, поэтому они решили использовать только CR
или LF
, Поскольку правильная кодировка для использования меняется с одной платформы на другую, лучше использовать Environment.NewLine
в .NET, чтобы получить то, что подходит для текущей системы.
Рассмотрим, например, при запуске этого консольного приложения в Windows:
Public Sub Main()
Console.Write("123" & vbCr)
Console.Write("4" & vbCr)
End Sub
Вывод:
423
Возврат каретки только заставил курсор вернуться к началу строки. Это не заставило его переместиться на следующую строку, поэтому 4 при печати перезаписывает 1.