Ampersand vs plus for concatenating strings in VB.NET

I prefer using & for string concatenations in VB.NET

One reason for this is to avoid any confusion e.g

MessageBox.Show(1 & 2) ' "12"
MessageBox.Show(1 + 2) ' 3

It's safer to use & since you're making your intention clear to the compiler (I want to concatenate these two values and they should both be converted to strings).

Using + can lead to hard to find bugs if the strings are numerical values, at least if the option strict is off.

For example:

1 + "1" = 2 ' this fails if option strict is on
1 & "1" = 11

Edit: though if you're concatenating a non-string you should probably use some better method anyway.


I've heard good, strong arguments in favor of both operators. Which argument wins the day depends largely on your situation. The one thing I can say is that you should standardize on one or the other. Code that mixes the two is asking for confusion later.

The two arguments I remember right now for favoring &:

  • If you're not using Option Strict and have two numeric strings, it's easy for the compiler to confuse your meaning of of the + operator with, you know, arithmetic addition
  • If you're updating a lot of older vb6-era code it helps not to have to convert the concatenation operators ( and remember: we want consistency).

And for +:

  • If you have a mixed vb/C# shop, it's nice to only have one concatenation operator. It makes it easier to move code between languages and means just that much less of a context switch for programmers when moving back and forth between languages
  • & is almost unique to VB, while + between strings is understood in many languages to mean concatenation, so you gain a little something in readability.

Microsoft's preference is for VB programmers to use & for strings and not +.

You can also use the + operator to concatenate strings. However, to eliminate ambiguity, you should use the & operator instead.