Идентификатор конца строки в 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() и т.д.)