Operatore + (Visual Basic)

Aggiunge due numeri o restituisce il valore positivo di un'espressione numerica. Può essere usato anche per concatenare due espressioni stringa.

Sintassi

expression1 + expression2

or

+expression1  

Parti

Termine Definizione
expression1 Obbligatorio. Qualsiasi espressione numerica o stringa.
expression2 Obbligatorio a meno che l'operatore + non stia calcolando un valore negativo. Qualsiasi espressione numerica o stringa.

Risultato

Se expression1 e expression2 sono entrambi numerici, il risultato è la somma aritmetica.

Se expression2 è assente, l'operatore + è l'operatore di identità unario per il valore non modificato di un'espressione. In questo senso, l'operazione consiste nel mantenere il segno di expression1, quindi il risultato è negativo se expression1 è negativo.

Se expression1 e expression2 sono entrambe stringhe, il risultato è la concatenazione dei relativi valori.

Se expression1 e expression2 sono di tipi misti, l'azione eseguita dipende dai relativi tipi, dal relativo contenuto e dall'impostazione dell'istruzione Option Strict. Per ulteriori informazioni, vedere le tabelle in "Commenti".

Tipi supportati

Tutti i tipi numerici, inclusi i tipi senza segno e a virgola mobile, Decimal e String.

Osservazioni:

In generale, + esegue l'addizione aritmetica quando possibile e concatena solo quando entrambe le espressioni sono stringhe.

Se nessuna delle due espressioni è Object, Visual Basic esegue le azioni seguenti.

Tipi di dati di espressioni Azione da parte del compilatore
Entrambe le espressioni sono tipi di dati numerici (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Singleo Double) Onere Il tipo di dati del risultato è un tipo numerico appropriato per i tipi di dati di expression1 e expression2. Vedere le tabelle aritmetiche integer nei Tipi di dati dei risultati dell'operatore.
Entrambe le espressioni sono di tipo String Concatenare.
Un'espressione è un tipo di dati numerico e l'altra è una stringa Se Option Strict è On, generare un errore del compilatore.

Se Option Strict è Off, convertire in modo implicito String in Double e aggiungere.

Se non è possibile convertire String in Double, generare un'eccezione InvalidCastException.
Un'espressione è un tipo di dati numerico e l'altra è Nothing Aggiungere, con valore Nothing uguale a zero.
Un'espressione è una stringa e l'altra è Nothing Concatenare, con Nothing con il valore "".

Se un'espressione è un'espressione Object, Visual Basic esegue le azioni seguenti.

Tipi di dati di espressioni Azione da parte del compilatore
L'espressione Object contiene un valore numerico e l'altra è un tipo di dati numerico Se Option Strict è On, generare un errore del compilatore.

Se Option Strict è Off, aggiungere.
L'espressione Object contiene un valore numerico e l'altra è di tipo String Se Option Strict è On, generare un errore del compilatore.

Se Option Strict è Off, convertire in modo implicito String in Double e aggiungere.

Se non è possibile convertire String in Double, generare un'eccezione InvalidCastException.
L'espressione Object contiene una stringa e l'altra è un tipo di dati numerico Se Option Strict è On, generare un errore del compilatore.

Se Option Strict è Off, convertire in modo implicito la stringa Object in Double e aggiungere.

Se non è possibile convertire la stringa Object in Double, generare un'eccezione InvalidCastException.
L'espressione Object contiene una stringa e l'altra è di tipo String Se Option Strict è On, generare un errore del compilatore.

Se Option Strict è Off, convertire Object in String in modo implicito e concatenare.

Se entrambe le espressioni sono espressioni Object, Visual Basic esegue le azioni seguenti (solo Option Strict Off).

Tipi di dati di espressioni Azione da parte del compilatore
Entrambe le espressioni Object contengono valori numerici Onere
Entrambe le espressioni Object sono di tipo String Concatenare.
Un'espressione Object contiene un valore numerico e l'altra contiene una stringa Convertire in modo implicito la stringa Object in Double e aggiungere.

Se non è possibile convertire la stringa Object in un valore numerico, generare un'eccezione InvalidCastException.

Se una delle due espressioni Object restituisce Nothing o DBNull, l'operatore + lo considera come con String un valore "".

Nota

Quando si usa l'operatore +, potrebbe non essere possibile determinare se si verificherà la concatenazione di addizioni o stringhe. Usare l'operatore & per la concatenazione per eliminare l'ambiguità e fornire codice autodocumentato.

Overload

L'operatore + può essere sottoposto a overload, il che significa che una classe o una struttura può ridefinirne il comportamento quando un operando ha il tipo di tale classe o struttura. Se il codice usa questo operatore in una classe o una struttura di questo tipo, assicurarsi di comprenderne il comportamento ridefinito. Per altre informazioni, vedere Operator Procedures.

Esempio

Nell'esempio seguente viene usato l'operatore + per aggiungere numeri. Se gli operandi sono entrambi numerici, Visual Basic calcola il risultato aritmetico. Il risultato aritmetico rappresenta la somma dei due operandi.

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

È anche possibile usare l'operatore + per concatenare le stringhe. Se gli operandi sono entrambe stringhe, Visual Basic li concatena. Il risultato della concatenazione rappresenta una singola stringa costituita dal contenuto dei due operandi uno dopo l'altro.

Se gli operandi sono di tipi misti, il risultato dipende dall'impostazione dell'istruzione Option Strict. Nell'esempio riportato di seguito viene illustrato il risultato quando 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. 

Nell'esempio riportato di seguito viene illustrato il risultato quando 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.

Per eliminare l'ambiguità, è consigliabile usare l'operatore & anziché + per la concatenazione.

Vedi anche