Operatore + (Visual Basic)
Aggiornamento: novembre 2007
Somma due numeri o restituisce il valore positivo di un'espressione numerica. Può essere utilizzato anche per concatenare due espressioni stringa.
expression1 + expression2
- or -
+ expression1
Parti
expression1
Obbligatoria. Qualsiasi espressione numerica o stringa.expression2
Obbligatoria, a meno che con l'operatore + non venga calcolato un valore negativo. Qualsiasi espressione numerica o stringa.
Risultato
Se expression1 ed expression2 sono entrambe di tipo numerico, il risultato è rappresentato dalla relativa somma aritmetica.
Se expression2 è assente, l'operatore + rappresenta l'operatore di identità unario per il valore non modificato di un'espressione. In questo caso, l'operazione consiste nel mantenere il segno di expression1, in modo che il risultato sia negativo se expression1 è negativa.
Se expression1 ed expression2 sono entrambe di tipo stringa, il risultato è rappresentato dalla concatenazione dei rispettivi valori.
Se expression1 ed expression2 sono di tipo diverso, l'azione eseguita dipende dal tipo, dal contenuto e dall'impostazione dell'Istruzione Option Strict. Per ulteriori informazioni, vedere le tabelle nella sezione relativa alle osservazioni.
Tipi supportati
Tutti i tipi numerici, inclusi i tipi senza segno, a virgola mobile, Decimal e String.
Note
In generale, + esegue la somma aritmetica quando possibile e la concatenazione solo nel caso in cui entrambe le espressioni siano stringhe.
Se nessuna delle due espressioni è di tipo Object, verranno eseguite le operazioni riportate di seguito.
Tipi di dati delle espressioni |
Operazione del compilatore |
---|---|
Entrambe le espressioni sono tipi di dati numerici (SByte, Byte, Short, UShort, Integer, UInteger, Long, ULong, Decimal, Single o Double) |
Verrà eseguita una somma. Il tipo di dati del risultato è un tipo numerico appropriato in base ai tipi di dati di expression1 ed expression2. Per informazioni, vedere le tabelle "Operazioni aritmetiche su valori integer" in Tipi di dati dei risultati degli operatori. |
Entrambe le espressioni sono di tipo String |
Verrà eseguita una concatenazione. |
Un'espressione è di tipo numerico e l'altra è una stringa |
Se Option Strict è On, verrà generato un errore del compilatore. Se Option Strict è Off, verranno eseguite la conversione implicita di String in Double e la somma. Se String non può essere convertito in Double, verrà generata un'eccezione InvalidCastException. |
Un'espressione è di tipo numerico e l'altra è Nothing (Visual Basic) |
Verrà eseguita una somma assegnando a Nothing il valore zero. |
Un'espressione è una stringa e l'altra è Nothing |
Verrà eseguita una concatenazione assegnando a Nothing il valore "". |
Se una delle due espressioni è di tipo Object, verranno eseguite le operazioni riportate di seguito.
Tipi di dati delle espressioni |
Operazione del compilatore |
---|---|
L'espressione Object contiene un valore numerico mentre l'altra è un tipo di dati numerico |
Se Option Strict è On, verrà generato un errore del compilatore. Se Option Strict è Off, verrà eseguita la somma. |
Object contiene un valore numerico mentre l'altra espressione è di tipo String |
Se Option Strict è On, verrà generato un errore del compilatore. Se Option Strict è Off, verranno eseguite la conversione implicita di String in Double e la somma. Se String non può essere convertito in Double, verrà generata un'eccezione InvalidCastException. |
L'espressione Object contiene una stringa mentre l'altra espressione è un tipo di dati numerico |
Se Option Strict è On, verrà generato un errore del compilatore. Se Option Strict è Off, verranno eseguite la conversione implicita di Object in Double e la somma. Se l'espressione Object di tipo stringa non può essere convertita in Double, verrà generata un'eccezione InvalidCastException. |
Object contiene una stringa mentre l'altra espressione è di tipo String |
Se Option Strict è On, verrà generato un errore del compilatore. Se Option Strict è Off, verranno eseguite la conversione implicita di Object in String e la concatenazione. |
Se entrambe le espressioni sono di tipo Object, verranno eseguite le operazioni riportate di seguito (solo Option Strict Off).
Tipi di dati delle espressioni |
Operazione del compilatore |
---|---|
Entrambe le espressioni Object contengono valori numerici |
Verrà eseguita una somma. |
Entrambe le espressioni Object sono di tipo String |
Verrà eseguita una concatenazione. |
Un'espressione Object contiene un valore numerico mentre l'altra contiene una stringa |
Verranno eseguite la conversione implicita dell'espressione Object di tipo stringa in Double e la somma. Se l'espressione Object di tipo stringa non può essere convertita in un valore numerico, verrà generata un'eccezione InvalidCastException. |
Se una delle due espressioni Object restituisce Nothing o DBNull, l'operatore + la considererà di tipo String con valore "".
Nota: |
---|
Quando si utilizza l'operatore +, non sempre è possibile stabilire se verrà eseguita una somma o una concatenazione di stringhe. Per eliminare qualsiasi ambiguità e fornire codice autodocumentato, si consiglia di utilizzare l'operatore & per la concatenazione. |
Overload
L'operatore + può essere sottoposto a overload. In altri termini, una classe o una struttura può ridefinirne il comportamento quando un operando specifica il tipo di tale classe o struttura. Se il codice utilizza l'operatore su una classe o una struttura di questo tipo, è importante comprendere il comportamento ridefinito di tale operatore. Per ulteriori informazioni, vedere Routine di operatore.
Esempio
Nell'esempio riportato di seguito l'operatore + viene utilizzato per eseguire la somma di numeri. Se gli operandi sono entrambi numerici, verrà calcolato 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.
L'operatore + consente anche di concatenare stringhe. Se gli operandi sono entrambi stringhe, verrà eseguita la concatenazione. Il risultato dell'operazione di concatenazione rappresenta una stringa singola costituita dal contenuto dei due operandi in successione.
Se gli operandi appartengono a tipi diversi, il risultato dipende dall'impostazione dell'Istruzione Option Strict. Nell'esempio riportato di seguito viene illustrato il risultato che si ottiene 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 che si ottiene 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 qualsiasi ambiguità, si consiglia di eseguire la concatenazione utilizzando l'operatore & anziché +.
Vedere anche
Concetti
Operatori aritmetici in Visual Basic
Riferimenti
Operatori di concatenazione (Visual Basic)
Operatori aritmetici (Visual Basic)
Elenco degli operatori per funzionalità