C/C++ week Zimní výprodej
Pouze tento týden sleva až 80 % na e-learning týkající se C/C++
40 % bodů zdarma díky naší Zimní akci!

Diskuze: Konverzia cisiel na retazce

Aktivity (4)
Avatar
Miloš Michrina:1.7.2019 20:11

Ahojte,

mam taku otazku. Som uplny zaciatocnik a ucim sa C#. Skusam si urcite priklady presne podla knizky, ktoru som si zakupil. V knizke u jedneho prikladu sa uvadza toto:

int cislo1 = 5;
int cislo2 = 10;
int soucetCisel = cislo1 + cislo2;
string retazec1 = cislo1.ToString();
string retazec2 = cislo2.ToString();
string soucetRetazcu = retazec1 + retazec2;
string soucetRetazcu2 = cislo1.ToString() + cislo2.ToString();
Console.WriteLine("Soucet cisel = {0}" , soucetCisel);
Console.WriteLine("Soucet retazcu = {0}", soucetRetazcu);
Console.ReadKey();

Ja si samozrejme vsetko viac krat preecvicujem aby som zacal chapat, co sa vlastne vypisalo do kodu. Len jednej veci nerozumiem, v knizke som to nenesiel zatial, ale nechcme ani pokracovat, kym to nepochopim:

Co znamena tento riadok?

string soucetRetazcu2 = cislo1.ToString() + cislo2.ToString();

Ja som to skusil aj bez tohto riadku a program sa mi uplne rovnako spustil a nevypisalo mi ziadnu chybu.

int cislo1 = 5;
            int cislo2 = 10;
            int sucetCisiel = cislo1 + cislo2;
            string retazec1 = cislo1.ToString();
            string retazec2 = cislo2.ToString();
            string sucetRetazcov = retazec1 + retazec2;
            Console.WriteLine("Sucet cisiel = {0}", sucetCisiel);
            Console.WriteLine("Sucet retazcov = {0}", sucetRetazcov);
            Console.ReadKey();

Mozno ak by som chapal tomu riadku tak by to bolo super, len mi to nejde do hlavy preco sa musi vytvorit nova premenna

soucetRetazcu2

Dakujem ak mi to niekto aspon malicko vysvetli, preco je tomu tak. :)

 
Odpovědět
1.7.2019 20:11
Avatar
HONZ4
Člen
Avatar
Odpovídá na Miloš Michrina
HONZ4:1.7.2019 20:47

Je to jedno, někdo to takhle rozepisuje. Rozdíl je pouze ve vzhledu.

ToString(); vytvoří nový string v obou případech. V případě použití "string retazec1 = cislo1.ToString();" mu je přiřadíš název.

 
Nahoru Odpovědět
1.7.2019 20:47
Avatar
Odpovídá na HONZ4
Miloš Michrina:1.7.2019 20:58

Dakujem za strucnu a jasnu odpoved :)

 
Nahoru Odpovědět
1.7.2019 20:58
Avatar
Jan Osuský
Člen
Avatar
Jan Osuský:1.7.2019 21:00

Ahoj,
Je to ekvivalentní zápis k tomu prvnímu sucetRetazcov. Zatímco u prvního sucetRetazcov si prvně převedená čísla vložíš do proměnných retazec1 a retazec2 a ty pak sečteš, a vložíš do sucetRetazcov, u druhého sucetRetazcov2 nevyužíváš pomocných proměných ( retazec1 a retazec2), ale cisla rovnou konvertuješ pří sčítáni. Je to tedy kratší zápis toho samého, ušetříš si dvě proměně.
Když si řádek s soucetRetazcu2 odstranil tak se nic nestalo proto, protože ho v původním kódu nijak nepoužíváš. Kdyby jsi do kódu přidal řádek

Console.WriteLine("Sucet retazcov2 = {0}", sucetRetazcov2);

a řádek s soucetRetazcu2 odstranil, pak by program spadl s chybou.

 
Nahoru Odpovědět
1.7.2019 21:00
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Jan Osuský
Miloš Michrina:1.7.2019 21:11

Parada :)

Takze v konecnom vysledku to mozem zapisat takto :

int cislo1 = 5;
int cislo2 = 10;
int soucetCisel = cislo1 + cislo2;
string sucetRetazcov = cislo1.ToString() + cislo2.ToString();
Console.WriteLine("Soucet cisel = {0}", soucetCisel);
Console.WriteLine("Sucet retazcov = {0}", sucetRetazcov);
Console.ReadKey();

Dakujem :)

 
Nahoru Odpovědět
1.7.2019 21:11
Avatar
HONZ4
Člen
Avatar
Odpovídá na Miloš Michrina
HONZ4:1.7.2019 21:23

Ano. Nebo taky:

Console.WriteLine("Sucet retazcov = {0}{1}", cislo1, cislo2);
 
Nahoru Odpovědět
1.7.2019 21:23
Avatar
Miloš Michrina:1.7.2019 21:38

Vyskusal som to este takto a vdaka tomu vlaknu, som to ovela viac pochopil ako z knizky, dakujem vam obom :)

int cislo1 = 5;
int cislo2 = 10;
int sucetCisel = cislo1 + cislo2;
string sucetRetazcov = sucetCisel.ToString();
Console.WriteLine("Soucet cisel = {0}", sucetCisel);
Console.WriteLine("Sucet retazcov = {0}", sucetRetazcov);
Console.ReadKey();
 
Nahoru Odpovědět
1.7.2019 21:38
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.