Exercice - Effectuer une addition avec la conversion de données implicite
Vous souhaiterez souvent effectuer des opérations mathématiques sur des valeurs numériques. Dans cette unité, vous commencerez par l’addition, puis vous verrez d’autres opérations dans l’unité suivante qui comprend une leçon importante pour comprendre comment le compilateur C# analyse et interprète votre code.
Additionner deux valeurs numériques
Pour additionner deux nombres, vous allez utiliser l’opérateur d’addition, qui est le symbole plus +
. Oui, le même symbole plus +
que vous utilisez pour la concaténation de chaînes est également utilisé pour l’addition. La réutilisation d’un même symbole à plusieurs fins est parfois appelée « surcharge de l’opérateur » et se produit fréquemment en C#.
Dans le cas présent, le compilateur C# comprend ce que vous essayez de faire. Le compilateur analyse votre code et voit que le symbole +
(l’opérateur) est entouré de deux valeurs numériques (les opérandes). Au vu des types de données des variables (int
s), il comprend que vous avez l’intention d’ajouter ces deux valeurs.
Entrez le code suivant dans l’éditeur .NET :
int firstNumber = 12; int secondNumber = 7; Console.WriteLine(firstNumber + secondNumber);
Exécutez le code, et vous verrez le résultat suivant dans la console de sortie :
19
Combiner les types de données pour forcer des conversions de type implicite
Que se passe-t-il si vous essayez d’utiliser le symbole +
avec les deux valeurs string
et int
?
Modifiez le code que vous avez écrit pour qu’il corresponde au code suivant :
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
Exécutez le code, et vous verrez le résultat suivant dans la console de sortie :
Bob sold 7 widgets.
Ici, le compilateur C# comprend que vous voulez utiliser le symbole +
pour concaténer les deux opérandes. Il en vient à cette déduction parce que le symbole +
est entouré par des opérandes de types de données string
et int
. Par conséquent, il tente de convertir implicitement la variable int
widgetsSold
en string
de manière temporaire pour pouvoir la concaténer avec le reste de la chaîne. Le compilateur C# tente de vous aider quand il peut, mais dans l’idéal, mieux vaut vous montrer explicite dans vos intentions.
Essayer un cas plus avancé d’addition de chiffres et de concaténation de chaînes
Modifiez le code que vous avez écrit pour qu’il corresponde au code suivant :
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");
Exécutez le code, et vous verrez le résultat suivant dans la console de sortie :
Bob sold 77 widgets.
Au lieu d’ajouter la variable int
widgetsSold
au littéral int
7
, le compilateur traite tout comme une chaîne et concatène tout ensemble.
Ajouter des parenthèses afin de clarifier votre intention pour le compilateur
Modifiez le code que vous avez écrit pour qu’il corresponde au code suivant :
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
Exécutez le code, et vous verrez le résultat suivant dans la console de sortie :
Bob sold 14 widgets.
Le symbole de parenthèses ()
devient un autre opérateur surchargé. Dans le cas présent, les parenthèses ouvrante et fermante forment l’opérateur de l’ordre des opérations, tout comme vous les utiliseriez dans une formule mathématique. Vous indiquez que vous voulez d’abord résoudre les parenthèses les plus intérieures, c’est-à-dire l’addition des valeurs int
widgetsSold
et de la valeur 7
. Une fois qu’elles sont résolues, le résultat est implicitement converti en chaîne pour pouvoir la concaténer avec le reste du message.
Notes
Dans l’absolu, il est préférable d’éviter de faire un calcul et une concaténation sur une seule ligne de code. Le but ici est de vous aider à comprendre comment voir les opérateurs et les opérandes de la manière dont les voit le compilateur.
Récapitulatif
Voici ce que vous avez appris jusqu’à présent concernant les opérations mathématiques en C# :
- Vous pouvez effectuer des opérations mathématiques comme des additions sur des nombres.
- La concaténation de chaînes et les additions utilisent le symbole
+
. Cela s’appelle une surcharge d’opérateur, et le compilateur déduit l’utilisation appropriée en fonction des types de données sur lesquels il opère. - Quand il le peut, le compilateur C# convertit implicitement un
int
enstring
s’il est évident que le développeur tente de concaténer la représentation sous forme de chaîne d’un nombre à des fins de présentation. - Utilisez des parenthèses pour définir un ordre d’opérations et indiquer explicitement au compilateur que vous voulez exécuter certaines opérations avant d’autres.