Амперсанд против плюс для конкатенации строк в 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 использует &, не уверен, почему они ввели +) и вопрос вкуса (я предпочитаю, и потому что мы объединяем строки, мы их не добавляем...).