+ (Operador, Visual Basic)

Suma dos números o devuelve el valor positivo de una expresión numérica. También se puede usar para concatenar dos expresiones de cadena.

Sintaxis

expression1 + expression2

o

+expression1  

Partes

Término Definición
expression1 Obligatorio. Cualquier expresión numérica o de cadena.
expression2 Obligatorio, a menos que el operador + calcule un valor negativo. Cualquier expresión numérica o de cadena.

Resultado

Si expression1 y expression2 son numéricos, el resultado es su suma aritmética.

Si expression2 está ausente, el operador + es el operador de identidad unario para el valor no modificado de una expresión. En este sentido, la operación consta de conservar el signo de expression1, por lo que el resultado es negativo si expression1 es negativo.

Si expression1 y expression2 son cadenas, el resultado es la concatenación de sus valores.

Si expression1 y expression2 son de tipos mixtos, la acción realizada depende de sus tipos, su contenido y la configuración de la instrucción Option Strict. Para más información, consulte las tablas en "Comentarios".

Tipos admitidos

Todos los tipos numéricos, incluidos los tipos sin signo y los de punto flotante y Decimal, y String.

Comentarios

En general, + realiza la suma aritmética siempre que sea posible y concatena solo cuando ambas expresiones son cadenas.

Si ninguna expresión es Object, Visual Basic toma las acciones siguientes.

Tipos de datos de expresiones Acción por compilador
Ambas expresiones son tipos de datos numéricos (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single o Double) Agregar. El tipo de datos de resultado es un tipo numérico adecuado para los tipos de datos de expression1 y expression2. Consulte las tablas "Aritmética de enteros" en Tipos de datos de resultados de operador.
Ambas expresiones son de tipo String Concatenar.
Una expresión es un tipo de datos numérico y la otra es una cadena Si Option Strict es On, generar un error de compilador.

Si Option Strict es Off, convertir implícitamente String en Double y sumar.

Si String no se puede convertir en Double, arrojar una excepción InvalidCastException.
Una expresión es un tipo de datos numérico y la otra es Nothing Sumar, con Nothing con cero como valor.
Una expresión es una cadena y la otra es Nothing Concatenar, con Nothing con "" como valor.

Si una expresión es una expresión Object, Visual Basic toma las acciones siguientes.

Tipos de datos de expresiones Acción por compilador
La expresión Object contiene un valor numérico y la otra es un tipo de datos numérico Si Option Strict es On, generar un error de compilador.

Si Option Strict es Off, sumar.
La expresión Object contiene un valor numérico y la otra es de tipo String Si Option Strict es On, generar un error de compilador.

Si Option Strict es Off, convertir implícitamente String en Double y sumar.

Si String no se puede convertir en Double, arrojar una excepción InvalidCastException.
La expresión Object contiene una cadena y la otra es un tipo de datos numérico Si Option Strict es On, generar un error de compilador.

Si Option Strict es Off, convertir implícitamente la cadena Object en Double y sumar.

Si la cadena Object no se puede convertir en Double, arrojar una excepción InvalidCastException.
La expresión Object contiene una cadena y la otra es de tipo String Si Option Strict es On, generar un error de compilador.

Si Option Strict es Off, convertir implícitamente Object en String y concatenar.

Si ambas expresiones son expresiones Object, Visual Basic toma las acciones siguientes (solo Option Strict Off).

Tipos de datos de expresiones Acción por compilador
Ambas expresiones Object contienen valores numéricos Agregar.
Ambas expresiones Object son de tipo String Concatenar.
Una expresión Object contiene un valor numérico y la otra contiene una cadena Convertir implícitamente la cadena Object en Double y sumar.

Si la cadena Object no se puede convertir en un valor numérico, arrojar una excepción InvalidCastException.

Si cualquiera de las expresiones Object se evalúa como Nothing o DBNull, el operador + la considera como String con un valor de "".

Nota

Al usar el operador +, es posible que no pueda determinar si se producirá la suma o la concatenación de cadenas. Use el operador & para la concatenación para eliminar la ambigüedad y para proporcionar código autodocumentado.

Sobrecarga

El operador + puede sobrecargarse, lo que significa que una clase o estructura puede redefinir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Si el código usa este operador en una clase o estructura de este tipo, asegúrese de que comprende su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.

Ejemplo

En el ejemplo siguiente, se usa el operador + para sumar números. Si los operandos son numéricos, Visual Basic calcula el resultado aritmético. El resultado aritmético representa la suma de los dos operandos.

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

También puede usar el operador + para concatenar cadenas. Si ambos operados son cadenas, Visual Basic los concatena. El resultado de la concatenación representa una cadena única que consta del contenido de los dos operandos, uno después del otro.

Si los operandos son de tipos mixtos, el resultado depende de la configuración de la instrucción Option Strict. En el ejemplo siguiente, se ilustra el resultado cuando Option Strict es 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. 

En el ejemplo siguiente, se ilustra el resultado cuando Option Strict es 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 la ambigüedad, debe usar el operador & en lugar de + para la concatenación.

Consulte también