Esercizio - Eseguire l'aggiunta con la conversione implicita dei dati
È spesso necessario eseguire operazioni matematiche su dati numerici. In questa unità si inizia con l'addizione, per poi passare ad altre operazioni nell'unità successiva, perché è fondamentale comprendere alcuni concetti importanti relativi al modo in cui il compilatore C# analizza e interpreta il codice.
Sommare due valori numerici
Per sommare due numeri, verrà usato l'operatore di addizione, ovvero il simbolo più +. Lo stesso simbolo più + usato per la concatenazione di stringhe viene usato anche per l'addizione. Il riutilizzo di un simbolo per più scopi viene talvolta denominato "overload dell'operatore" e si verifica spesso in C#.
In questo caso, il compilatore C# comprende l'operazione che si sta provando a eseguire. Il compilatore analizza il codice e rileva che l'operatore + è racchiuso tra due valori numerici (gli operandi). Considerati i tipi di dati delle variabili (entrambi int), deduce che l'intenzione è quella di sommare i due valori.
Un editor di codice C# è disponibile per l'uso direttamente nel browser: Editor di codice C#. Questo editor offre un ambiente leggero per la scrittura, l'esecuzione e il test di codice C# senza dover installare alcun software nel computer locale.
Aprire l'editor di codice C# in una nuova finestra o scheda del browser.
È possibile posizionare le finestre del browser side-by-side in modo da poter fare riferimento a queste istruzioni mentre si lavora nell'editor di codice C#.
Immettere il codice seguente nell'editor di codice C#:
int firstNumber = 12; int secondNumber = 7; Console.WriteLine(firstNumber + secondNumber);Eseguire il codice e quindi nella console di output verrà visualizzato il risultato seguente:
19
Combinare tipi di dati diversi per forzare la conversione implicita del tipo
Cosa accade se si tenta di usare il simbolo + con i valori string e int?
Rimuovere tutto il codice scritto in precedenza.
Immettere il codice seguente nell'editor di codice C#:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");Eseguire il codice e quindi nella console di output verrà visualizzato il risultato seguente:
Bob sold 7 widgets.
In questo caso, il compilatore C# riconosce che si vuole usare il simbolo + per concatenare i due operandi. Deduce questo perché il simbolo + è racchiuso tra gli operandi dei tipi di dati string e int. Tenta quindi di convertire in modo implicito la variabile intwidgetsSold nel tipo string temporaneamente, in modo da poterla concatenare con il resto della stringa. Il compilatore C# tenta di aiutare quando possibile, ma idealmente, è consigliabile esprimere in modo esplicito le proprie intenzioni.
Sperimentare un caso più avanzato di somma di numeri e di concatenazione di stringhe
Modificare il codice scritto in modo che sia uguale al seguente:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");Eseguire il codice e quindi nella console di output verrà visualizzato il risultato seguente:
Bob sold 77 widgets.
Invece di aggiungere la variabile intwidgetsSold al valore letterale int7, il compilatore considera tutti gli elementi come una stringa e li concatena tutti insieme.
Aggiungere parentesi per chiarire l'intenzione del compilatore
Modificare il codice scritto in modo che sia uguale al seguente:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");Eseguire il codice e quindi nella console di output verrà visualizzato il risultato seguente:
Bob sold 14 widgets.
Il simbolo di parentesi () diventa un altro operatore di overload. In questo caso, le parentesi aperta e chiusa formano l'operatore di ordine delle operazioni, proprio come in una formula matematica. Si indica l'intenzione di risolvere prima le parentesi più interne, sommando quindi i valori intwidgetsSold e il valore 7. Dopo la risoluzione, il risultato verrà convertito in modo implicito in una stringa in modo che possa essere concatenato con il resto del messaggio.
Nota
Probabilmente è consigliabile evitare di eseguire sia un calcolo che una concatenazione in una singola riga di codice. L'obiettivo in questo caso è comprendere come vedere gli operatori e gli operandi dal punto di vista del compilatore.
Riepilogo
Ecco quanto appreso finora sulle operazioni matematiche in C#:
- È possibile eseguire operazioni matematiche come l'addizione sui numeri.
- Sia la concatenazione di stringhe che l'addizione usano il simbolo
+. Questa situazione è nota come overload di un operatore e il compilatore deduce l'uso corretto in base ai tipi di dati su cui opera. - Quando possibile, il compilatore C# convertirà in modo implicito un valore
intinstring, se è ovvio che lo sviluppatore sta provando a concatenare la rappresentazione stringa di un numero a scopo di presentazione. - Usare le parentesi per definire l'ordine delle operazioni e indicare in modo esplicito al compilatore che si vogliono eseguire determinate operazioni prima di altre.