Идентификатор конца строки в VB.NET?
Какой идентификатор конечной строки я должен использовать (например, для вывода в текстовые файлы)?
Есть много вариантов:
- vbCrLf
- vbNewLine (видимо, псевдоним vbCrLf)
- ControlChars.CrLf
- ControlChars.NewLine
- Environment.NewLine
- Статический член в некотором классе С# в приложении (требуется решение на смешанном языке): public static string LINEEND = "\ r\n";
-
Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10)
(созданный дизайнером Visual Studio, по крайней мере Visual Basic 2005 Express Edition, для TextBox с свойством Multiline, установленным в True когда Shift + Return используется при редактировании свойства Text.)
Какова наилучшая практика?
Ответы
Ответ 1
Я считаю, что в целом смысл использовать Environment.NewLine
как идентификатор новой строки по целому ряду причин:
- Это переменная , зависящая от среды . Если вы, например, запускаете свою программу на Linux (например), то значение будет просто
\n
.
-
vbCrLf
- устаревшая константа из языков VB6 и более ранних языков. Кроме того, он не является независимым от среды.
-
\r\n
имеет ту же проблему, что и не зависящий от среды, а также не может быть хорошо выполнен в VB.NET(вам нужно назначить переменную Chr(13) & Chr(10)
).
- Элементы управления существуют в пространстве имен
Microsoft.VisualBasic
, что делает его совместимым с предыдущей версией, например vbCrLf
. Всегда избегайте устаревшего кода, если это возможно.
Ответ 2
Environment.NewLine
просто потому, что он зависит от среды и ведет себя по-разному на разных платформах.
Ответ 3
В зависимости от стиля программирования вы можете выбрать:
- Класс ControlChars, если вы всегда используете VB и другие части вашего кода, используют стандарты VB (как вы объявляете переменные? Как Integer или As Int32? Integer - это VB, Int32 является общим для каждого языка .NET). Во всяком случае, только если вы уже вышли замуж за VB. В противном случае..
- Окружающая среда для общего, языка и среды независимо (мое предложение)
Я думаю, что хуже всего было бы использовать функции ретросопротивления, такие как vbCrLf (или CInt() и т.д.)