На каждом сайте, который говорит о VBScript, оператор "&
" указан как оператор конкатенации строк. Однако в некотором коде, который я недавно унаследовал, я вижу, что используется оператор +
', и я не вижу никаких ошибок в результате этого. Является ли это приемлемой альтернативой?
В чем разница между оператором VBScript + и &?
Ответ 1
Оператор + перегружен, а оператор и не является. Оператор and выполняет только конкатенацию строк. В некоторых кругах оператор и используется как наилучшая практика, потому что он недвусмыслен и поэтому не может иметь никаких непреднамеренных эффектов в результате перегрузки.
Ответ 2
Оператор &
выполняет конкатенацию строк, т.е. принудительно преобразует операнды в строки (например, сначала называть CStr
). +
, в свою очередь, добавляет силы, если одно из выражений является числовым. Например:
1 & 2
дает вам 12
, тогда как
1 + 2
"1" + 2
1 + "2"
предоставит вам 3
.
Таким образом, рекомендуется использовать &
для конкатенации строк, поскольку устраняет двусмысленность.
Ответ 3
Оператор +
может иметь неприятные последствия, когда строки могут быть интерпретированы как числа. Если вы не хотите использовать неприятные сюрпризы и объединять строки.
Ответ 4
В некоторых случаях + генерирует исключение; например, следующее:
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
Вы получите исключение, когда источник объекта COM запускает событие - вы должны выполнить одно из следующих действий:
MsgBox "Received Event: " & fvalue
или
MsgBox "Received Event: " + CStr(fvalue)
В любом случае может быть лучше использовать CStr(value)
; но использование и для комментариев выше для конкатенации строк - почти всегда лучшая практика.