VBA: разница между & и +

В чем разница между:

string1 + string2

а также

string1 & string2

Они эквивалентны? Зачем два разных символа, которые делают одно и то же?


person Alex Gordon    schedule 29.07.2010    source источник


Ответы (2)


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

В MSDN есть запись об операциях конкатенации в Visual Basic. что объясняет его:

Оператор & (Visual Basic) определен только для строковых операндов и всегда расширяет свои операнды до строки, независимо от параметра Option Strict. Оператор & рекомендуется для конкатенации строк, поскольку он определен исключительно для строк и снижает вероятность непреднамеренного преобразования.

person Michael Mrozek    schedule 29.07.2010
comment
Выражения не совпадают даже со строками, если одно из значений равно null. - person Fionnuala; 29.07.2010
comment
Статья MSDN посвящена Visual Basic, но я думаю, что это работает и в VBA? Страницы документации VBA нет или нет? - person Kapé; 25.12.2015

Два выражения эквивалентны, но операторы — нет. + можно использовать как арифметический оператор, а также для объединения строк, & можно использовать только для последнего.

person Georg Fritzsche    schedule 29.07.2010
comment
У них разное поведение, см. + оператор против & оператора . - person Georg Fritzsche; 29.07.2010
comment
Рассмотрим нулевое значение, объединенное со строкой с помощью + - person Fionnuala; 29.07.2010