38

On every site that talks about VBScript, the '&' operator is listed as the string concatenation operator. However, in some code that I have recently inherited, I see the '+' operator being used and I am not seeing any errors as a result of this. Is this an accepted alternative?

4 Answers 4

48

The & operator does string concatenation, that is, forces operands to be converted to strings (like calling CStr on them first). +, in its turn, forces addition if one of the expressions is numeric. For example:

1 & 2

gives you 12, whereas

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

give you 3.

So, it is recommended to use & for string concatenation since it eliminates ambiguity.

Sign up to request clarification or add additional context in comments.

1 Comment

+1 for specifying string number + number. Accepted answer doesn't mention vbscript converting numeric strings to numbers.
45

The + operator is overloaded, whereas the & operator is not. The & operator only does string concatenation. In some circles the & operator is used as a best practice because it is unambiguous, and therefore cannot have any unintended effects as a result of the overloading.

3 Comments

The + operator is overloaded -- overloaded in what sense?
@wolf in VB the + operator can do both addition and concatenation, depending on context.
Well, I already read this. I found the word overloaded itself so overloaded that I wished, the answer could be a little bit more precise in this point.
7

+ operator might backfire when strings can be interpreted as numbers. If you don't want nasty surprises use & to concatenate strings.

Comments

2

In some cases the + will throw an exception; for example the following:

Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
   'fvalue is a floating point number
   MsgBox "Received Event: " + fvalue
End Sub

You will get an exception when the COM object source fires the event - you must do either of the following:

MsgBox "Received Event: " & fvalue

or

MsgBox "Received Event: " + CStr(fvalue)

It may be best in either case to use CStr(value); but using & per above comments for string concatenation is almost always best practice.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.