Diskuze: C# - void, string() a metoda return
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nemůžeš nic vracet z metody, co má návratovou hodnotu typu void. Void prostě znamená, že něco provedeš, ale nic nevrátíš
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;
}
Děkuji všem za rady Už je mi to jasné.
Zobrazeno 5 zpráv z 5.