&
is only used for string concatenation. +
is overloaded to do both string concatenation and arithmetic addition.The double purpose of +
leads to confusion, exactly like that in your question. Especially when Option Strict
is Off
, because the compiler will add implicit casts on your strings and integers to try to make sense of your code.
My recommendations
Option Strict On
, then the compiler will force you to add explicit casts where it thinks they are necessary. +
for concatenation because of the ambiguity with arithmetic addition. Both these recommendations are also in the Microsoft Press book Practical Guidelines And Best Practises for VB and C# (sections 1.16, 21.2)