Подтвердить что ты не робот

Обработка строк с помощью & или + в VB.NET

Я видел, как несколько программистов используют & и + для строковых манипуляций.

Например:

dim firstvar as string
dim secondvar as string
dim thirdvar as string

thirdvar = firstvar & secondvar

Или это:

thirdvar = firstvar + secondvar

Это имеет значение? Если да, то почему?

4b9b3361

Ответ 1

Операторы + и & не идентичны в VB.NET.

Использование оператора & указывает на ваше намерение объединить строки, а оператор + указывает на ваше намерение добавлять номера. Использование оператора & преобразует обе стороны операции в строки. Когда у вас смешанные типы (одна сторона выражения - это строка, другая - число), ваше использование оператора определит результат.

1 + "2" = 3 'This will cause a compiler error if Option Strict is on'
1 & "2" = "12"
1 & 2 = "12"
"text" + 2 'Throws an InvalidCastException since "text" cannot be converted to a Double'

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

Ответ 2

Рассмотрим, если вам лучше использовать String.Format при конкатенации строк. Обычно код заканчивается тем, что имеет больше смысла.

Кроме того, если вы конкатенируете много раз, подумайте о том, чтобы использовать StringBuilder, а не строку.

Ответ 3

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

Ответ 4

Амперсанд - рекомендуемый метод. Оператор плюс будет работать, иногда, для конкатенации строк, но не считается правильным и будет иногда приводить к непредвиденным результатам.

Ответ 5

Они идентичны в VB.NET при работе с 2 строками. "&" оператор существует для обратной совместимости в VB 6 и ранее, где и был оператором конкатенации строк, и + не работал для текста.

Существует разница, если один из двух операндов не является строкой, а указал bdukes. Однако в этой ситуации я настоятельно рекомендую использовать String.Format или StringBuilder (в зависимости от количества/типов операций) для построения результирующей строки из смешанных типов.

В целом я бы рекомендовал использовать + по одной причине. Если вы когда-либо решили перевести код на другой язык (например, С#), оператор + будет больше соответствовать переведенной версии. Вероятно, для людей, приезжающих с другого языка, будет легче понять и следовать вашему коду.

Ответ 6

Независимо от многочисленных подсказок "придерживаться одного ИЛИ другого" - это зависит от сильно, что вы объединяете.

Короче говоря, я бы использовал "&" для строк и "+" только для арифметических операций

Почему? Взгляните на https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/addition-operator#remarks

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

Я также добавлю https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/operators-and-expressions/concatenation-operators#differences-between-the-two-concatenation-operators с понятным выражением:

Оператор + имеет основную цель добавления двух чисел.