Gyakorlat – Hozzáadás implicit adatkonvertálással

Befejeződött

Gyakran érdemes matematikai műveleteket végezni numerikus adatokon. Ebben a leckében a kiegészítéssel kell kezdenie, és a következő leckében ki kell bontania a többi műveletre, mert egy fontos lecke bemutatja, hogyan elemzi és értelmezi a C#-fordító a kódot.

Két numerikus érték összeadása

Két szám együttes hozzáadásához az összeadás operátort fogja használni, amely a pluszjel +. Nem tévedés, a sztringek összefűzésére használt pluszjelet + használjuk az összeadáshoz is. Egy szimbólum több célra való felhasználását olykor „az operátor túlterhelésének” nevezik, és ez a C# nyelvben gyakran előfordul.

Ebben az esetben a C#-fordító megérti a szándékát. A fordító feldolgozza a kódot, és látja, hogy a + szimbólumot (az operátort) két numerikus érték fogja közre (az operandusok). A változók adattípusai alapján (mindkettő int) látja, hogy Ön mindkét értéket hozzá akarta adni.

  1. Írja be a következő kódot a .NET-szerkesztőbe:

    int firstNumber = 12;
    int secondNumber = 7;
    Console.WriteLine(firstNumber + secondNumber);
    
  2. Futtassa a kódot, és a következő eredményt fogja látni a kimeneti konzolon:

    19
    

Vegyes adattípusok használata az implicit típuskonverziók kiváltásához

Mi történik, ha egyszerre és int értékekkel string próbálja használni a + szimbólumot?

  1. Módosítsa a megírt kódot úgy, hogy az megfeleljen a következő kódnak:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");
    
  2. Futtassa a kódot, és a következő eredményt fogja látni a kimeneti konzolon:

    Bob sold 7 widgets.
    

Ebben az esetben a C#-fordító megérti, hogy a + szimbólumot a két operandus összefűzéséhez szeretné használni. Erre abból következtet, hogy a + szimbólumot string és int típusú adatok fogják közre. Emiatt megkísérli az int típusú widgetsSold változót ideiglenesen string típusra konvertálni, hogy összefűzhesse a sztring többi részével. A C#-fordító megpróbál segíteni, mégis érdemesebb egyértelműen kifejezni a szándékainkat.

Próbálja ki a számok összeadásának és a sztringek összefűzésének egy speciálisabb esetét

  1. Módosítsa a megírt kódot úgy, hogy az megfeleljen a következő kódnak:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");
    
  2. Futtassa a kódot, és a következő eredményt fogja látni a kimeneti konzolon:

    Bob sold 77 widgets.
    

Ahelyett, hogy összeadná az int típusú widgetsSold változó értékét az int típusú 7 konstanssal, a fordító mindent sztringként kezel és összefűz.

Zárójelek hozzáadása a fordító szándékának tisztázásához

  1. Módosítsa a megírt kódot úgy, hogy az megfeleljen a következő kódnak:

    string firstName = "Bob";
    int widgetsSold = 7;
    Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");
    
  2. Futtassa a kódot, és a következő eredményt fogja látni a kimeneti konzolon:

    Bob sold 14 widgets.
    

A () zárójel szintén többszörös szerepű operátor. Ebben az esetben a nyitó és záró zárójel a műveleti sorrendet kijelölő operátor, ahogyan egy matematikai képletben használnánk. Azt jelzi, hogy először a legbelső zárójeleket szeretné feloldani, ami az értékek widgetsSold és az érték 7hozzáadását int eredményezi. Ennek kiszámítása után az eredményt implicit módon sztringgé konvertálja, hogy összefűzhető legyen az üzenet többi részével.

Feljegyzés

Talán érdemesebb kerülni a számítási és összefűzési műveletek egy kódsoron belüli használatát. Itt az a cél, hogy megértse, hogyan veheti figyelembe az operátorokat és operandusokat ugyanúgy, ahogyan a fordító.

Összefoglalás

A C#-ban végzett matematikai műveletekről eddig az alábbiakat tanulta:

  • A számokkal olyan matematikai műveletek végezhetők, mint az összeadás.
  • A sztringösszefűzéshez és az összeadáshoz is a pluszjelet (+) használhatja. Ilyenkor beszélünk operátor többszörös szerepben veló használatáról, és a megfelelő használatot a fordító az adattípusok alapján határozza meg.
  • Amennyiben lehetséges, a C#-fordító string értékké konvertálja az int típust, ha egyértelmű, hogy a fejlesztő a sztringként megjelenített számot szeretné beépíteni a kimenetbe.
  • Zárójelek használatával határozza meg a műveletek sorrendjét, hogy explicit módon közölje a fordítóval, hogy bizonyos műveleteket más műveletek előtt szeretne végrehajtani.