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 +
. 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.
Írja be a következő kódot a .NET-szerkesztő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 egyszerre és int
értékekkel string
próbálja használni a +
szimbólumot?
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.");
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 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 7
hozzá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 azint
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.