Gyakorlat – Hozzáadás implicit adatkonvertálással
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 +. Igen, ugyanazt a pluszjelet + használjuk a karakterláncok összefűzésére és az összeadásra 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.
A C# kódszerkesztő közvetlenül a böngészőben használható: C# Kódszerkesztő. Ez a szerkesztő egy egyszerű környezetet biztosít a C#-kód írásához, futtatásához és teszteléséhez anélkül, hogy szoftvereket kellene telepítenie a helyi számítógépre.
Nyissa meg a C#-kódszerkesztőt egy új böngészőablakban vagy lapon.
A böngészőablakokat egymás mellett helyezheti el, hogy a C#-kódszerkesztőben végzett munka során ezekre az utasításokra hivatkozzon.
Írja be a következő kódot a C# kódszerkesztőbe:
int firstNumber = 12; int secondNumber = 7; Console.WriteLine(firstNumber + secondNumber);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 megpróbálja a + szimbólumot mind a string, mind pedig a int értékekkel használni?
Távolítsa el a korábban írt összes kódot.
Írja be a következő kódot a C# kódszerkesztőbe:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");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
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.");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
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.");Futtassa a kódot, és a következő eredményt fogja látni a kimeneti konzolon:
Bob sold 14 widgets.
A () zárójel operátor túlterhelté válik. 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 a int és widgetsSold értékek, valamint a 7 érték hozzáadását 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. A lényeg itt az, hogy megértse, hogyan tekintsen az operátorokra és operandusokra úgy, ahogy a fordítóprogram.
Ö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. Ezt operátor túlterhelésnek nevezzük, és a fordító az adattípusok alapján következtet a megfelelő használatra. - Amennyiben lehetséges, a C#-fordító implicit módon átkonvertálja a
int-tstring-re, ha egyértelmű, hogy a fejlesztő a szám sztring reprezentációját próbálja összefűzni megjelenítési célokra. - 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.