Oefening: toevoegen met impliciete gegevensconversie

Voltooid

Vaak wilt u wiskundige bewerkingen uitvoeren op numerieke gegevens. U begint met toevoeging in deze les en gaat verder met andere bewerkingen in de volgende les, omdat er een belangrijke les is om te leren hoe de C#-compiler uw code parseert en interpreteert.

Twee numerieke waarden optellen

Als u twee getallen samen wilt optellen, gebruikt u de opteloperator, het plusteken +. Ja, hetzelfde plus-symbool + dat u gebruikt voor het samenvoegen van tekenreeksen, wordt ook gebruikt voor optellen. In C# wordt een symbool vaak voor meerdere doeleinden gebruikt. In dat geval spreekt men van operator-overloading.

In dit geval begrijpt de C#-compiler wat u probeert te doen. Het compileerprogramma parseert de code en ziet dat + (de operator) zich tussen twee numerieke waarden (de operands) bevindt. Gezien de gegevenstypen van de variabelen (beide zijn een int), gaat het programma ervan uit dat u van plan was om die twee waarden bij elkaar op te tellen.

Er is een C#-code-editor beschikbaar om rechtstreeks in de browser te gebruiken: C#-code-editor. Deze editor biedt een lichtgewicht omgeving voor het schrijven, uitvoeren en testen van C#-code zonder dat u software op uw lokale computer hoeft te installeren.

  1. Open de C#-code-editor in een nieuw browservenster of tabblad.

    U kunt de browservensters naast elkaar plaatsen, zodat u deze instructies kunt raadplegen terwijl u in de C#-code-editor werkt.

  2. Voer de volgende code in de C#-code-editor in:

    int firstNumber = 12;
    int secondNumber = 7;
    Console.WriteLine(firstNumber + secondNumber);
    
  3. Voer de code uit en u ziet het volgende resultaat in de uitvoerconsole:

    19
    

Gegevenstypen combineren om impliciete typeconversie af te dwingen

Wat gebeurt er als u het + symbool probeert te gebruiken met zowel als stringint waarden?

  1. Verwijder alle code die u eerder hebt geschreven.

  2. Voer de volgende code in de C#-code-editor in:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
    
  3. Voer de code uit en u ziet het volgende resultaat in de uitvoerconsole:

    Bob sold 7 widgets.
    

In dit geval begrijpt de C#-compiler dat u het + symbool wilt gebruiken om de twee operanden samen te voegen. Dit is duidelijk omdat het symbool + tussen operands van de gegevenstypen string en int staat. Daarom wordt de int-variabele widgetsSold tijdelijk impliciet geconverteerd naar een string zodat deze kan worden samengevoegd met de rest van de tekenreeks. De C#-compiler probeert u te helpen waar dat kan, maar in het ideale geval geeft u expliciet aan wat uw intentie is.

Probeer nu iets moeilijkers waarbij u getallen optelt en tekenreeksen samenvoegt

  1. Wijzig de code die u hebt geschreven zodat deze overeenkomt met de volgende code:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");
    
  2. Voer de code uit en u ziet het volgende resultaat in de uitvoerconsole:

    Bob sold 77 widgets.
    

In plaats van de int-variabele widgetsSold aan de letterlijke waarde int7 toe te voegen, behandelt de compiler alles als een tekenreeks en wordt alles samengevoegd.

Haakjes toevoegen om uw intentie aan de compiler te verduidelijken

  1. Wijzig de code die u hebt geschreven zodat deze overeenkomt met de volgende code:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
    
  2. Voer de code uit en u ziet het volgende resultaat in de uitvoerconsole:

    Bob sold 14 widgets.
    

Door het haakjes-symbool () krijgt de operator een andere functie. In dit geval vormen de haakjes openen en sluiten de operator voor de volgorde van bewerkingen, net zoals u dat in een wiskundige formule zou gebruiken. U geeft aan dat de binnenste haakjes eerst moeten worden omgezet, wat resulteert in het toevoegen van int waarden widgetsSold en de waarde 7. Nadat dit is opgelost, wordt het resultaat impliciet geconverteerd naar een tekenreeks zodat deze kan worden samengevoegd met de rest van het bericht.

Notitie

Vermijd weliswaar het uitvoeren van een berekening en een samenvoeging in één regel code, Het gaat er hier echter om dat u begrijpt hoe het compileerprogramma operators en operanden interpreteert.

Samenvatting

Dit is wat u tot nu toe hebt geleerd over wiskundige bewerkingen in C#:

  • U kunt rekenkundige bewerkingen, zoals het optellen van getallen, uitvoeren.
  • Zowel bij het samenvoegen van tekenreeksen als bij het optellen wordt het plusteken + gebruikt. Dit wordt overbelasting van een operator genoemd en de compiler bepaalt het juiste gebruik op basis van de gegevenstypen waarop deze werkt.
  • De C#-compiler converteert een int indien mogelijk impliciet naar een string als het duidelijk is dat de ontwikkelaar de tekenreeksrepresentatie van een getal voor presentatiedoeleinden wil samenvoegen.
  • Gebruik haakjes om een volgorde van bewerkingen te definiëren om de compiler expliciet te laten weten dat u bepaalde bewerkingen wilt uitvoeren vóór andere bewerkingen.