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 , Single o 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.