Поделиться через


Оператор + (Visual Basic)

Складывает два числа или возвращает точное значение числового выражения. Может также использоваться для сцепления двух строковых выражений.

expression1 + expression2
- or -
+ expression1

Части

Термин

Определение

expression1

Обязательный. Любое числовое или строковое выражение.

expression2

Требуется, если оператор + не используется для вычисления отрицательного значения. Любое числовое или строковое выражение.

Результат

Если expression1 и expression2 оба являются о числовыми, то результатом является их арифметическая сумма.

Если expression2 отсутствует, то оператор + является унарным оператором идентификатора для неизменяемого значения выражения. В этом случае операция представляет собой сохранение знака выражения expression1 таким образом, чтобы результат был отрицательным, если expression1 было отрицательным.

Если expression1 и expression2 оба являются строками, результатом является объединение их значений.

Если expression1 и expression2 разных типов, то действие зависит от их типов, их содержимого и значения параметра Оператор Option Strict. Дополнительные сведения см. в таблицах в разделе "Примечания".

Поддерживаемые типы

Все числовые типы, в том числе беззнаковые, с плавающей запятой, Decimal и String.

Заметки

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

Если ни одно из двух выражений не является Object, Visual Basic выполняет следующие действия.

Типы данных выражений

Действие компилятора

Оба выражения являются числовыми типами данных (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single или Double)

Сложение. Тип данных результата является числовым типом, соответствующим типам данных выражений expression1 и expression2. См. таблицы "Целочисленные арифметические операции" в разделе Типы данных результатов оператора (Visual Basic).

Оба выражения имеют тип String

Объединение.

Одно выражение — числовой тип данных, а второе — строка.

Если Option Strict имеет значение On, то создается ошибка компилятора.

Если Option Strict имеет значение Off, то можно неявно преобразовать String в Double и сложить.

Если String не может быть преобразовано в Double, создается исключение InvalidCastException.

Одно выражение числового типа данных, а второе — Nothing (Visual Basic)

Сложение, Nothing принимается за ноль.

Одно выражение — строка, а второе — Nothing

Объединение, Nothing возвращает "".

Если одно из выражений является выражением Object, Visual Basic выполняет следующие действия.

Типы данных выражений

Действие компилятора

Выражение Object содержит числовое значение и другое — числового типа данных.

Если Option Strict имеет значение On, то создается ошибка компилятора.

Если Option Strict имеет значение Off, то можно использовать сложение.

Выражение Object содержит числовое значение и другое String

Если Option Strict имеет значение On, то создается ошибка компилятора.

Если Option Strict имеет значение Off, то можно неявно преобразовать String в Double и сложить.

Если String не может быть преобразовано в Double, создается исключение InvalidCastException.

Выражение Object содержит строку и другое — числового типа данных

Если Option Strict имеет значение On, то создается ошибка компилятора.

Если Option Strict имеет значение Off, то можно неявно преобразовать Object в Double и сложить.

Если Object не может быть преобразовано в Double, создается исключение InvalidCastException.

Выражение Object содержит строку, а другое имеет тип String

Если Option Strict имеет значение On, то создается ошибка компилятора.

Если Option Strict имеет значение Off, то можно неявно преобразовать Object в String и объединить.

Если оба выражения являются Object выражениями, Visual Basic выполняет следующие действия (только Option Strict Off).

Типы данных выражений

Действие компилятора

Оба выражения Object содержат числовые значения

Сложение.

Оба выражения Object имеют тип String

Объединение.

Одно выражение Object содержит числовое значение, а другое содержит строку

Можно неявно преобразовать строку Object в Double и сложить.

Если строка Object не может быть преобразована в числовое значение, то создается исключение InvalidCastException.

Если любое из двух выражений Object принимает значение Nothing или DBNull, то оператор + рассматривает его как String со значением "".

Примечание

При использовании оператора + не всегда удается определить, произойдет объединение строк или операция сложения.Чтобы избежать неоднозначности и получить самодокументирующий код, используйте для объединения оператор &.

Перегрузка

Оператор + может быть перегружен; это означает, что класс или структура может переопределить его поведение, если операнд имеет тип соответствующего класса или структуры. Если в коде используется этот оператор для такого класса или структуры, убедитесь, что его переопределенное поведение вам понятно. Дополнительные сведения см. в разделе Процедуры операторов (Visual Basic).

Пример

В следующем примере оператор + используется для сложения чисел. Если оба операнда являются числовыми, Visual Basic вычисляет арифметический результат. Арифметический результат возвращает сумму двух операндов.

Dim sumNumber As Integer
sumNumber = 2 + 2
sumNumber = 4257.04 + 98112
' The preceding statements set sumNumber to 4 and 102369.

Кроме того, имеется возможность использовать оператор + для объединения строк. Если оба операнда являются строками, Visual Basic объединяет их. Результат объединения представляет одну строку, состоящую из содержимого двух операндов (один за другим).

Если используются операнды разных типов, результат зависит от значения Оператор Option Strict. В следующем примере показан результат, когда для Option Strict задано On.

Option Strict On
Dim var1 As String = "34" 
Dim var2 As Integer = 6
Dim concatenatedNumber As Integer = var1 + var2


...


' The preceding statement generates a COMPILER ERROR. 

В следующем примере показан результат, когда для Option Strict задано Off.

Option Strict Off
Dim var1 As String = "34" 
Dim var2 As Integer = 6
Dim concatenatedNumber As Integer = var1 + var2


...


' The preceding statement returns 40 after the string in var1 is 
' converted to a numeric value. This might be an unexpected result. 
' We do not recommend use of Option Strict Off for these operations.

Чтобы избежать неоднозначности, при объединении следует использовать оператор & вместо +.

См. также

Ссылки

Оператор & (Visual Basic)

Операторы объединения (Visual Basic)

Арифметические операторы (Visual Basic)

Список операторов, сгруппированных по функциональному назначению (Visual Basic)

Порядок применения операторов в Visual Basic

Оператор Option Strict

Основные понятия

Арифметические операторы в Visual Basic