Exercice - Effectuer une addition avec la conversion de données implicite

Effectué

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 (ints), il comprend que vous avez l’intention d’ajouter ces deux valeurs.

Un éditeur de code C# est disponible pour être utilisé directement dans le navigateur : Éditeur de code C#. Cet éditeur fournit un environnement léger pour l’écriture, l’exécution et le test du code C# sans avoir à installer de logiciels sur votre ordinateur local.

  1. Ouvrez l’Éditeur de code C# dans une nouvelle fenêtre ou onglet du navigateur.

    Vous pouvez positionner les fenêtres de navigateur côte à côte afin de pouvoir faire référence à ces instructions pendant que vous travaillez dans l’éditeur de code C#.

  2. Entrez le code suivant dans l’éditeur de code C# :

    int firstNumber = 12;
    int secondNumber = 7;
    Console.WriteLine(firstNumber + secondNumber);
    
  3. 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 ?

  1. Supprimez tout le code que vous avez écrit précédemment.

  2. Entrez le code suivant dans l’éditeur de code C# :

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
    
  3. 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 intwidgetsSold 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

  1. 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.");
    
  2. 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 intwidgetsSold au littéral int7, 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

  1. 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.");
    
  2. 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 intwidgetsSold 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 en string 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.