Что является различием между:
string1 + string2
и
string1 & string2
Действительно ли они эквивалентны? Почему имеют два различных символа, которые делают то же самое?
Выражения остаются такими же, пока операнды являются строками; в противном случае, +
может добавить их вместо этого в зависимости от преобразования типов. &
гарантирует, что вы не получите ничего, кроме конкатенации строк, и преобразуете операнды в строки, если это возможно.
В MSDN есть запись об операциях конкатенации в Visual Basic , которая объясняет это:
Оператор & (Visual Basic) определен только для строковых операндов, и он всегда расширяет свои операнды до String, независимо от того, настройки Option Strict. Оператор & рекомендуется для конкатенации строк, поскольку он определен исключительно для строк и снижает ваши шансы на создание непреднамеренного преобразования.
Два выражения эквивалентны, но операторы - нет. +
можно использовать как арифметический оператор, так и для конкатенации строк, &
- только для последнего.