Operador + (Visual Basic)
Adds two numbers or returns the positive value of a numeric expression. Can also be used to concatenate two string expressions.
expression1 + expression2
- or -
+ expression1
Parts
Term |
Definition |
expression1 |
Required. Any numeric or string expression. |
expression2 |
Required unless the + operator is calculating a negative value. Any numeric or string expression. |
Result
If expression1 and expression2 are both numeric, the result is their arithmetic sum.
If expression2 is absent, the + operator is the unary identity operator for the unchanged value of an expression. In this sense, the operation consists of retaining the sign of expression1, so the result is negative if expression1 is negative.
If expression1 and expression2 are both strings, the result is the concatenation of their values.
If expression1 and expression2 are of mixed types, the action taken depends on their types, their contents, and the setting of the Opção declaração estrito. For more information, see the tables in "Remarks."
Supported Types
All numeric types, including the unsigned and floating-point types and Decimal, and String.
Comentários
In general, + performs arithmetic addition when possible, and concatenates only when both expressions are strings.
If neither expression is an Object, Visual Basic takes the following actions.
Data types of expressions |
Action by compiler |
Both expressions are numeric data types (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single, or Double) |
Add. O tipo de dados de resultado é um tipo numérico apropriado para os tipos de dados de expression1 e expression2. See the "Integer Arithmetic" tables in Tipos de dados de resultados de operador (Visual Basic). |
Both expressions are of type String |
Concatenate. |
One expression is a numeric data type and the other is a string |
If Option Strict is On, then generate a compiler error. If Option Strict is Off, then implicitly convert the String to Double and add. If the String cannot be converted to Double, then throw an InvalidCastException exception. |
One expression is a numeric data type, and the other is Nada (Visual Basic) |
Add, with Nothing valued as zero. |
One expression is a string, and the other is Nothing |
Concatenate, with Nothing valued as "". |
If one expression is an Object expression, Visual Basic takes the following actions.
Data types of expressions |
Action by compiler |
Object expression holds a numeric value and the other is a numeric data type |
If Option Strict is On, then generate a compiler error. If Option Strict is Off, then add. |
Objectexpressão contém um valor numérico e a outra é do tipoString |
If Option Strict is On, then generate a compiler error. If Option Strict is Off, then implicitly convert the String to Double and add. If the String cannot be converted to Double, then throw an InvalidCastException exception. |
Object expression holds a string and the other is a numeric data type |
If Option Strict is On, then generate a compiler error. If Option Strict is Off, then implicitly convert the string Object to Double and add. If the string Object cannot be converted to Double, then throw an InvalidCastException exception. |
Objectexpressão contém uma seqüência de caracteres e a outra é do tipoString |
If Option Strict is On, then generate a compiler error. If Option Strict is Off, then implicitly convert Object to String and concatenate. |
If both expressions are Object expressions, Visual Basic takes the following actions (Option Strict Off only).
Data types of expressions |
Action by compiler |
Both Object expressions hold numeric values |
Add. |
Both Object expressions are of type String |
Concatenate. |
One Object expression holds a numeric value and the other holds a string |
Implicitly convert the string Object to Double and add. If the string Object cannot be converted to a numeric value, then throw an InvalidCastException exception. |
If either Object expression evaluates to Nothing or DBNull, the + operator treats it as a String with a value of "".
Observação |
---|
When you use the + operator, you might not be able to determine whether addition or string concatenation will occur. Use the & operator for concatenation to eliminate ambiguity and to provide self-documenting code. |
Overloading
The + operator can be overloaded, which means that a class or structure can redefine its behavior when an operand has the type of that class or structure. If your code uses this operator on such a class or structure, be sure you understand its redefined behavior. For more information, see Procedimentos de operador (Visual Basic).
Exemplo
The following example uses the + operator to add numbers. If the operands are both numeric, Visual Basic computes the arithmetic result. The arithmetic result represents the sum of the two operands.
Dim sumNumber As Integer
sumNumber = 2 + 2
sumNumber = 4257.04 + 98112
' The preceding statements set sumNumber to 4 and 102369.
You can also use the + operator to concatenate strings. If the operands are both strings, Visual Basic concatenates them. The concatenation result represents a single string consisting of the contents of the two operands one after the other.
If the operands are of mixed types, the result depends on the setting of the Opção declaração estrito. The following example illustrates the result when Option Strict is 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.
The following example illustrates the result when Option Strict is 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.
To eliminate ambiguity, you should use the & operator instead of + for concatenation.
Consulte também
Referência
Operadores de concatenação (Visual Basic)
Operadores Aritméticos (Visual Basic)
Operadores listados por Funcionalidade (Visual Basic)
Precedência de operadores no Visual Basic