Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Neaktivní uživatel:17.8.2017 14:24

Ahoj. Jsem začátečník v programování a měl bych několik otázek ohledně jazyku C#.

  1. Jaká je vlastně definice metody void? Můžu místo ní používat jenom konstruktory nebo má oproti nim nějaké výhody?
  2. Vždy jsem si myslel, že typ string se vždy váže k nějakému textu, např. takhle:
public string Text = "Text";

Ale několikrát jsem i viděl, že byl string zapsán jako metoda, např. takhle:

public string Text()
 {
//Nějaky kod
}.

V jakém případě se dá tedy použít string jako metoda??
3. Jak funguje metoda return? Vím, že v některých případech vrací nějakou hodnotu, např. v

public bool Pristup(string password)
{
if(password == Password)
{
return true;
}
else
{
return false;
}
}

V tomto případě vrátí hodnotu Booleanu true nebo false, podle toho jestli se zadané heslo = požadovanému heslu. Ale jak funguje v jiných případech? Když budu mít např. tento kod:

public void Vypocet()
{
x = a * b;
return x;
}

Možná jsou tyto otázky velice triviální, ale tohle mi pořád vrtá hlavou a celkově v tom mám zmatek. K učení používám materiály zde na webu a zatím jsem si prošel Základní konstrukci C# a OOP v C# a musím uznat, že materiály jsou velice přehledné a strašně moc toho naučí - za to velice děkuji autorovi těchto výukových materiálu.

Děkuji moc za odpověď.
Přeji hezký den.

Odpovědět
17.8.2017 14:24
Neaktivní uživatelský účet
Avatar
Tomáš
Člen
Avatar
Tomáš :17.8.2017 14:55

Ahoj Filipe klíčové slovo void říká že metoda (funkce) nebude vracet žádnou hodnotu resp

public void vypocet(int a,int b)
{
int x=a*b;
}

public int vypocet (int a,int b)
{
int x=a*b;
return x;
}
 
Nahoru Odpovědět
17.8.2017 14:55
Avatar
Luboš Běhounek Satik:17.8.2017 14:57
  1. návratový typ void znamená, že metoda nic nevrací, někdy se takovým metodám po staru říká procedury a metody co něco vracejí jsou funkce
  2. string reprezentuje jakýkoliv text, ty ten text můžeš i sestavit dynamicky, třeba právě v nějaké funkci a ta funkce pak vrací ten nově vytvořený string
  3. return právě ukončí tu funkci a vrací tu hodnotu :)

Nemůžeš nic vracet z metody, co má návratovou hodnotu typu void. Void prostě znamená, že něco provedeš, ale nic nevrátíš :)

Nahoru Odpovědět
17.8.2017 14:57
https://www.facebook.com/peasantsandcastles/
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:19.8.2017 9:33

Filipe, máš v tom trošičku zmatek, takže to vezmu polopatě:

1. Jaká je vlastně definice metody void? Můžu místo ní používat jenom konstruktory nebo má oproti nim nějaké výhody?

Definice je jasná, v té nejzákladnější podobě:

void JmenoMetody()
{
}

Dále se ještě obvykle vždy uvádí přístupový modifikátor, tedy public, private nebo protected. Do závorek se pak píšou parametry metody, které metoda potřebuje znát, aby se mohla provést. Tím, že je void, nic nevrací, tedy jen něco udělá, ale výsledek této činnosti se jen někde projeví, metoda nám ho nesdělí.

Konstruktor je trošku jiná záležitost. Ten se volá ve chvíli, kdy potřebuješ zavést do operační paměti novou instanci nějaké třídy. Opět mu můžeš předat nějaké parametry, ale nikdy nepoužiješ klíčového slova void - konstruktor defakto vrací tu novou instanci, ale jak jistě víš, musí se volat pomocí klíčového slova new.

Naproti tomu metoda s návratovým typem void zavolaná na nějaké instanci nic nevrací, ale pouze buď nějak modifikuje danou instanci (např. změní nějakou její vlastnost) a nebo ji nechá něco vykonat s tím, že ten výsledek se projeví jinde, jak jsem psal výše.

2. Dva různé zápisy stringu

Ve skutečnosti se nejedná o dva různé zápisy stringu. To první je uložení stringu do proměnné se jménem Text:

public string Text = "Text";

To druhé je deklarace veřejné metody se jménem Text, která je bezparametrická a její návratový typ je string:

public string Text()
 {
        //Nějaky kod
}

Takovou metodu bych osobně pojmenoval spíš GetText, aby bylo z názvu patrné, o co asi půjde. Upozorňuji, že je to metoda s návratovým typem, tedy musí všechny větve jejího kódu končit klíčovým slovem return a za ním nějaký string, např.

public string GetText()
{
        return "Hello, World!";
}

3. Jak funguje metoda return?

return je klíčové slovo, kterým se ukončuje vykonávání metody. Jakmile se při průběhu metody narazí na slovo return, výkon metody tímto okamžikem končí. Pokud má metoda deklarovaný jiný návratový typ, než void, musí bezprostředně za slovem return následovat, co se vrací. Např. jak jsem nakousl u minulé otázky string, nebo bool v tvém ukázkovém příkladu.

Teď ta druhá metoda - nemůžeš navracet proměnnou v metodě, která je typu void, tedy nenávratová!

public int x;

public void Vypocti(int a, int b)
{
        x = a + b;
}

A naopak

public int Vypocti(int a, int b)
{
        return a + b; //můžeš přeskočit zbytečnou proměnnou x
}

Ještě ukázka použití slova return v metodě void:

public int x;
public void Vypocet(int a, int b)
{
        x = a + b;
        if (x < 12) return;
        else x = x + b;
}
Nahoru Odpovědět
19.8.2017 9:33
Programátor je stroj k převodu kávy na kód.
Avatar
Neaktivní uživatel:19.8.2017 10:21

Děkuji všem za rady :) Už je mi to jasné.

Nahoru Odpovědět
19.8.2017 10:21
Neaktivní uživatelský účet
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 5 zpráv z 5.