Cvičení – přidání s implicitní převodem dat
Často budete chtít provádět matematické operace s číselnými daty. V této lekci začnete s přidáním a rozbalíte další operace v další lekci, protože existuje důležitá lekce, která vám umožní zjistit, jak kompilátor jazyka C# parsuje a interpretuje váš kód.
Přidání dvou číselných hodnot
Pokud chcete sečíst dvě čísla, použijete sčítací operátor, což je symbol plus. Ano, stejný symbol plus +, který jste používali ke spojování řetězců, se používá i ke sčítání. Použití jednoho symbolu k více účelům se někdy označuje jako „přetížení operátoru“. V jazyce C# se s ním často setkáte.
V tomto případě kompilátor jazyka C# pozná, co chcete udělat. Kompilátor parsuje váš kód a vidí, že + (operátor) je obklopen dvěma číselnými hodnotami (operandy). Vzhledem k datovým typům proměnných (obě jsou typu int) si vyhodnotí, že jste chtěli přidat tyto dvě hodnoty.
Editor kódu jazyka C# je k dispozici přímo v prohlížeči: Editor kódu jazyka C#. Tento editor poskytuje jednoduché prostředí pro psaní, spouštění a testování kódu jazyka C# bez nutnosti instalovat jakýkoli software na místní počítač.
Otevřete Editor kódu jazyka C# v novém okně nebo kartě prohlížeče.
Okna prohlížeče můžete umístit vedle sebe, abyste mohli při práci v editoru kódu jazyka C# odkazovat na tyto pokyny.
Do editoru kódu jazyka C# zadejte následující kód:
int firstNumber = 12; int secondNumber = 7; Console.WriteLine(firstNumber + secondNumber);Spusťte kód a v konzole výstupu uvidíte následující výsledek:
19
Smíchání datových typů kvůli vynucení implicitního převodu typů
Co se stane, když se pokusíte použít + symbol s oběma string hodnotami?int
Odeberte veškerý kód, který jste napsali dříve.
Do editoru kódu jazyka C# zadejte následující kód:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");Spusťte kód a v konzole výstupu uvidíte následující výsledek:
Bob sold 7 widgets.
V tomto případě kompilátor jazyka C# rozumí tomu, že chcete použít + symbol ke zřetězení dvou operandů. Usoudí tak z toho důvodu, že symbol + se nachází mezi operandy, které mají datové typy string a int. Proto se pokusí proměnnou int typu widgetsSold implicitně (a dočasně) převést na typ string, aby ji mohl spojit se zbytkem řetězce. Kompilátor jazyka C# se vám snaží pomáhat, jak jen může, ale raději byste ho měli o svých záměrech explicitně informovat.
Pokus o složitější případ sčítání čísel a spojování řetězců
Upravte kód, který jste napsali, tak, aby odpovídal následujícímu kódu:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");Spusťte kód a v konzole výstupu uvidíte následující výsledek:
Bob sold 77 widgets.
Namísto přidání proměnné int k literálu widgetsSold, kompilátor považuje vše za řetězec a spojí to dohromady.
Přidejte závorky, abyste kompilátoru objasnili svůj záměr
Upravte kód, který jste napsali, tak, aby odpovídal následujícímu kódu:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");Spusťte kód a v konzole výstupu uvidíte následující výsledek:
Bob sold 14 widgets.
Ze symbolu závorek () se stane další přetížený operátor. Levá a pravá závorka tvoří v tomto případě operátor pořadí operací – podobně jako v matematickém vzorci. Označujete, že chcete, aby se nejvnitřnější závorky vyřešily jako první, což vede k sečtení hodnot int a widgetsSold a hodnoty 7. Výsledek se pak implicitně převede na řetězec, aby mohl být připojen k ostatním částem zprávy.
Poznámka:
Provádění výpočtů a zřetězení v jediném řádku kódu byste se měli spíše vyhnout. Naším cílem je pomoci vám pochopit způsob, jak rozumí operátorům a operandům kompilátor.
Rekapitulace
Tady je, co jste se zatím naučili o matematických operacích v jazyce C#:
- S čísly můžete provádět matematické operaci, jako je sčítání.
- Znaménko plus
+se používá jak ke spojování, tak ke sčítání řetězců. Tomuto stavu se říká přetížení operátoru. Kompilátor odvodí správný způsob použití operátoru podle použitých datových typů operandů. - Pokud je zřejmé, že se vývojář snaží spojit řetězcovou reprezentaci čísla pro účely prezentace, kompilátor jazyka C# implicitně převede
intnastring, pokud je to možné. - Pomocí závorek definujte pořadí operací, abyste explicitně řekli kompilátoru, že chcete provést určité operace před jinými operacemi.