Подтвердить что ты не робот

В чем разница между оператором VBScript + и &?

На каждом сайте, который говорит о VBScript, оператор "&" указан как оператор конкатенации строк. Однако в некотором коде, который я недавно унаследовал, я вижу, что используется оператор + ', и я не вижу никаких ошибок в результате этого. Является ли это приемлемой альтернативой?

4b9b3361

Ответ 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); но использование и для комментариев выше для конкатенации строк - почти всегда лучшая практика.