Operador + (Visual Basic)

Adiciona dois números ou retorna o valor positivo de uma expressão numérica. Também pode ser usado para concatenar duas expressões de cadeia de caracteres.

Sintaxe

expression1 + expression2

ou

+expression1  

Partes

Termo Definição
expression1 Obrigatórios. Qualquer expressão numérica ou de cadeia de caracteres.
expression2 Obrigatório, a menos que o operador + esteja calculando um valor negativo. Qualquer expressão numérica ou de cadeia de caracteres.

Result

Se expression1 e expression2 forem numéricos, o resultado será a soma aritmética.

Se expression2 estiver ausente, o operador + será o operador de identidade unário para o valor inalterado de uma expressão. Nesse sentido, a operação consiste em reter o sinal de expression1, portanto, o resultado será negativo se expression1 for negativo.

Se expression1 e expression2 forem cadeias de caracteres, o resultado será a concatenação dos valores.

Se expression1 e expression2 forem de tipos mistos, a ação executada dependerá dos tipos, do conteúdo e da configuração da Instrução Option Strict. Para obter mais informações, confira as tabelas em "Comentários".

Tipos com suporte

Todos os tipos numéricos, incluindo os de ponto flutuante e sem sinal, Decimal e String.

Comentários

Em geral, + executa a adição aritmética quando possível e concatena somente quando as duas expressões são cadeias de caracteres.

Se nenhuma das expressões for uma Object, o Visual Basic executará as ações a seguir.

Tipos de dados de expressões Ação por compilador
As duas expressões são tipos de dados numéricos (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single ou Double) Adicionar. O tipo de dados do resultado será um tipo numérico apropriado para os tipos de dados de expression1 e expression2. Consulte as tabelas "Aritmética de inteiros" nos Tipos de dados de resultados do operador.
As duas expressões são do tipo String Concatenate.
Uma expressão é um tipo de dados numérico e a outra é uma cadeia de caracteres Se Option Strict for On, gere um erro do compilador.

Se Option Strict for Off, converta implicitamente o String em Double e adicione.

Se não for possível converter o String em Double, gere uma exceção InvalidCastException.
Uma expressão é um tipo de dados numérico e a outra é Nothing Adicionar, com Nothing com valor de zero.
Uma expressão é uma cadeia de caracteres, e a outra é Nothing Concatenar, com Nothing com valor de "".

Se uma expressão for Object, o Visual Basic executará as ações a seguir.

Tipos de dados de expressões Ação por compilador
A expressão Object contém um valor numérico e a outra é um tipo de dados numérico Se Option Strict for On, gere um erro do compilador.

Se Option Strict for Off, adicione.
A expressão Object contém um valor numérico e a outra é do tipo String Se Option Strict for On, gere um erro do compilador.

Se Option Strict for Off, converta implicitamente o String em Double e adicione.

Se não for possível converter o String em Double, gere uma exceção InvalidCastException.
A expressão Object contém uma cadeia de caracteres e a outra é um tipo de dados numérico Se Option Strict for On, gere um erro do compilador.

Se Option Strict for Off, converta implicitamente a cadeia de caracteres Object em Double e adicione.

Se não for possível converter a cadeia de caracteres Object em Double, gere uma exceção InvalidCastException.
A expressão Object contém uma cadeia de caracteres e a outra é do tipo String Se Option Strict for On, gere um erro do compilador.

Se Option Strict for Off, converta implicitamente Object em String e concatene.

Se as duas expressões forem Object, o Visual Basic executará as ações a seguir (somente Option Strict Off).

Tipos de dados de expressões Ação por compilador
As duas expressões Object contêm valores numéricos Adicionar.
As duas expressões Object são d o tipo String Concatenate.
Uma expressão Object contém um valor numérico e a outra contém uma cadeia de caracteres Converta implicitamente a cadeia de caracteres Object em Double e adicione.

Se não for possível converter a cadeia de caracteres Object em um valor numérico, gere uma exceção InvalidCastException.

Se uma das expressões Object for avaliada como Nothing ou DBNull, o operador + a tratará como um String com valor de "".

Observação

Ao usar o operador +, talvez você não consiga determinar se a concatenação de adição ou cadeia de caracteres ocorrerá. Use o operador & para concatenação para eliminar a ambiguidade e fornecer código de autodocumentação.

Sobrecarga

O operador + pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se o código usar esse operador em uma classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, confira Procedimentos de operador.

Exemplo

O exemplo a seguir usa o operador + para adicionar números. Se os operandos forem numéricos, o Visual Basic calculará o resultado aritmético. O resultado aritmético representa a soma dos dois operandos.

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

Você também pode usar o operador + para concatenar cadeias de caracteres. Se os operandos forem cadeias de caracteres, o Visual Basic os concatenará. O resultado da concatenação representa uma única cadeia de caracteres que consiste no conteúdo dos dois operandos um após o outro.

Se os operandos forem de tipos mistos, o resultado dependerá da configuração da Instrução Option Strict. O exemplo a seguir ilustra o resultado quando Option Strict for 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. 

O exemplo a seguir ilustra o resultado quando Option Strict for 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.

Para eliminar a ambiguidade, você deve usar o operador & em vez de + para concatenação.

Confira também