Амперсанд против плюс для конкатенации строк в VB.NET

В VB.NET существует ли какое-либо преимущество в использовании & для объединения строк вместо +?

Например

Dim x as String = "hello" + " there"

против.

Dim x as String = "hello" & " there"

Да, я знаю, что для множества конкатенаций строк я бы хотел использовать StringBuilder, но это более общий вопрос.

Ответ 1

Я слышал хорошие, сильные аргументы в пользу обоих операторов. Какой аргумент выигрывает день, во многом зависит от вашей ситуации. Единственное, что я могу сказать, это то, что вы должны стандартизировать одно или другое. Код, который смешивает эти два, просит о путанице позже.

Два аргумента, которые я помню сейчас для поддержки &:

  • Если вы не используете Option Strict и имеете две числовые строки, компилятору будет легко перепутать значение оператора + с, как вы знаете, арифметическим сложением
  • Если вы обновляете много старого кода эпохи vb6, это помогает не преобразовывать операторы конкатенации (и помните: нам нужна согласованность).

И для +:

  • Если у вас смешанный магазин vb/С#, было бы хорошо иметь только один оператор конкатенации. Это облегчает перемещение кода между языками и значительно снижает переключение контекста для программистов при переходе назад и вперед между языками.
  • & почти уникален для VB, в то время как + между строками во многих языках понимается как конкатенация, так что вы немного улучшите читабельность.

Ответ 2

Micorosoft предпочтение для прогеммеров VB для использования и для строк, NOT +.

Вы также можете использовать оператор + для конкатенации строк. Однако, чтобы устранить двусмысленность, вы должны использовать вместо этого оператор и.

Ответ 3

Я предпочитаю использовать & для конкатенаций строк в VB.NET

Одна из причин этого - избежать путаницы, например,

MessageBox.Show(1 & 2) ' "12"
MessageBox.Show(1 + 2) ' 3

Ответ 4

Это безопаснее использовать, и поскольку вы делаете свое намерение ясным для компилятора (я хочу объединить эти два значения, и они оба должны быть преобразованы в строки).

Использование + может привести к затруднению поиска ошибок, если строки являются числовыми значениями, по крайней мере, если параметр strict отключен.

Например:

1 + "1" = 2 ' this fails if option strict is on
1 & "1" = 11

Изменить: хотя, если вы конкатенируете не-строку, вы, вероятно, должны использовать какой-то лучший метод.

Ответ 5

Я полагаю, что это исторический (не .NET Visual Basic использует &, не уверен, почему они ввели +) и вопрос вкуса (я предпочитаю, и потому что мы объединяем строки, мы их не добавляем...).