Оператор + (Visual Basic)
Обновлен: Ноябрь 2007
Складывает два числа или возвращает точное значение числового выражения. Может также использоваться для сцепления двух строковых выражений.
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. Смотри таблицы "Целочисленные арифметические операции" в разделе Типы данных результатов оператора. |
Оба выражения имеют тип 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 вычисляет арифметический результат. Арифметический результат возвращает сумму двух операндов.
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)
Список операторов, сгруппированных по функциональному назначению