В чем разница между операторами + и & VBScript в VBScript?
-
05-07-2019 - |
Вопрос
На каждом сайте, где рассказывается о VBScript, '&
' operator указан как оператор конкатенации строк.Однако в некотором коде, который я недавно унаследовал, я вижу '+
"используется оператор, и я не вижу никаких ошибок в результате этого.Является ли это приемлемой альтернативой?
Решение
Оператор + перегружен, тогда как & amp; Оператор не. & Amp; Оператор выполняет только конкатенацию строк. В некоторых кругах & amp; Оператор используется в качестве лучшей практики, поскольку он однозначен и, следовательно, не может иметь никаких непреднамеренных последствий в результате перегрузки.
Другие советы
Оператор & amp;
выполняет конкатенацию строк, то есть заставляет операнды преобразовываться в строки (например, сначала вызывая для них CStr
). +
, в свою очередь, вызывает сложение, если одно из выражений является числовым. Например:
1 & 2
дает вам 12
, тогда как
1 + 2
"1" + 2
1 + "2"
даст вам 3
.
Поэтому рекомендуется использовать & amp;
для конкатенации строк, поскольку это устраняет неоднозначность.
+
может иметь неприятные последствия, если строки можно интерпретировать как числа. Если вы не хотите неприятных сюрпризов, используйте & amp; объединить строки.
В некоторых случаях + вызовет исключение;например, следующее:
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)
;но использование & в приведенных выше комментариях для конкатенации строк почти всегда является наилучшей практикой.