В настоящее время три константы имеют схожие функции, но разное историческое происхождение, и очень иногда вам может потребоваться использовать одну или другую.
Вам нужно вспомнить времена старых ручных пишущих машинок, чтобы понять истоки этого. Чтобы начать новую строку текста, необходимо выполнить два различных действия:
- переместите печатающую головку обратно влево. На практике в пишущей машинке это делается путем перемещения рулона, несущего бумагу («каретку»), полностью вправо - печатающая головка зафиксирована. Это возврат каретки.
- переместите бумагу вверх на ширину одной линии. Это перевод строки.
В компьютерах эти два действия представлены двумя разными символами: возврат каретки - CR
, символ ASCII 13, vbCr
; перевод строки - LF
, символ ASCII 10, vbLf
. В старые времена телетайпов и строчных принтеров принтеру необходимо было отправлять эти два символа - традиционно в последовательности CRLF
- для начала новой строки, и поэтому комбинация CRLF
- vbCrLf
- стала традиционной последовательностью окончания строки в некоторых вычислительных средах.
Проблема, конечно, заключалась в том, что было столь же разумно использовать только один символ для обозначения конца строки и чтобы терминал или принтер выполняли действия как возврата каретки, так и перевода строки автоматически. И поэтому, прежде чем вы это узнали, у нас было 3 разных допустимых окончания строк: только LF
(используется в Unix и Macintosh), только CR
(очевидно, используется в старых Mac OS) и комбинация CRLF
(используется в DOS и, следовательно, в Windows). Это, в свою очередь, привело к осложнениям программ DOS / Windows, имеющих возможность открывать файлы в text mode
, где любая пара CRLF
, считанная из файла, преобразовывалась в одну CR
(и наоборот при записи).
Итак - чтобы сократить (слишком) длинный рассказ - существуют исторические причины существования трех отдельных разделителей строк, которые сейчас часто не имеют значения: и, возможно, лучший способ действий в .NET - использовать Environment.NewLine
, что означает, что кто-то else решил за вас, что использовать, и в будущем следует уменьшить проблемы с переносимостью.
person
AAT
schedule
01.12.2014