В чем разница между оператором + и & в VBScript? - PullRequest
31 голосов
/ 30 июля 2009

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

Ответы [ 4 ]

40 голосов
/ 30 июля 2009

Оператор + перегружен, а оператор & - нет. Оператор & выполняет только конкатенацию строк. В некоторых кругах оператор & используется в качестве наилучшей практики, поскольку он однозначен и, следовательно, не может иметь никаких непредвиденных последствий в результате перегрузки.

35 голосов
/ 31 июля 2009

Оператор & выполняет конкатенацию строк, то есть заставляет операнды преобразовываться в строки (например, сначала вызывая CStr для них). +, в свою очередь, вызывает сложение, если одно из выражений является числовым. Например:

1 & 2

дает вам 12, тогда как

1 + 2
"1" + 2
1 + "2"

даст вам 3.

Итак, рекомендуется использовать & для объединения строк, поскольку это устраняет неоднозначность.

6 голосов
/ 30 июля 2009
Оператор

+ может иметь неприятные последствия, если строки можно интерпретировать как числа. Если вы не хотите неприятных сюрпризов, используйте & для объединения строк.

1 голос
/ 08 февраля 2014

В некоторых случаях + вызывает исключение; например следующее:

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

...