Diskuze: Návratová hodnota
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 14 zpráv z 14.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


No jelikož to není celý kód tak můžu jen hádat. Jak předáváš Login instanci třídě User ?
Ahoj.
Třída nevrací hodnotu, jedině její metoda.
Možná instance třídy Login, konkrétně metoda Overeni by mohla vracet bool, což by šlo v main otestovat.
Z toho co psal jsem pochopil ,tak mu bool vrací tahle funkce
public bool UserLog()
{
return userLog;
}
A to mu nefunguje.
Zkoušel jsem to otestovat a vypíše se true.
Takže když uděláš tohle tak ti to vypíše True ? Když to tvoje upravíš takhle.
public bool Upravy()
{
userLog = login.UserLog();
return userLog;
}
static void Main(string[] args)
{
Login login = new Login();
User user = new User();
login.Overeni();
Console.WriteLine(user.Upravy());
Console.ReadKey();
}
Ne v tomto případě ne ale pokud udělám to samé u metody Overeni tak ano.
No tak u metody "Overeni" to nemá smysl když tam přiřazuješ tu
hodnotu.
A používáš VS ?
userLog = login.UserLog();
Nevyhazuje ti tohle ve VS chybu ?
Já vím, ale chtěl jsem vyloučit úplně všechny možnosti. A ano používám, ale nic to nevypisuje.
Nebylo by lepší poslat celý kód ? Hodila by se aspoň třída User.
Teď jsem si všiml jak jsem se tě předtím ptal. Ty ve třídě User máš
vytvořenou instanci Login takhle
Login login = new Login();
?
Ano
class Program
{
static void Main(string[] args)
{
Login login = new Login();
User user = new User();
Console.Title = "Login ZOO";
login.Overeni();
user.Upravy();
Console.ReadKey();
}
}
}
class Login
{
private string jmenoLogin;
private string hesloLogin;
private string jmenoAdmin = "admin";
private string hesloAdmin = "admin";
private string jmenoUser = "user";
private string hesloUser = "user";
private bool adminLog = false;
private bool userLog = false;
private bool platnePrihlaseni = false;
//vstup uzivatelskych udaju
private void Vstup()
{
Console.WriteLine("------------------Login------------------\n");
Console.Write("Zadejte jméno: ");
jmenoLogin = Console.ReadLine();
Console.Write("Zadejte heslo: ");
hesloLogin = Console.ReadLine();
}
//overeni zda je prihlasen admin, user nebo jsou udaje spatne
public void Overeni()
{
while (!platnePrihlaseni)
{
Vstup();
if ((jmenoLogin == jmenoAdmin) && (hesloLogin == hesloAdmin))
{
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine("Admin log\n");
adminLog = true;
userLog = false;
platnePrihlaseni = true;
}
else if ((jmenoLogin == jmenoUser) && (hesloLogin == hesloUser))
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("User log\n");
userLog = true;
adminLog = false;
platnePrihlaseni = true;
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Neplatné jméno nebo heslo\nZadejte znovu");
platnePrihlaseni = false;
}
}
}
public bool AdminLog()
{
return adminLog;
}
public bool UserLog()
{
return userLog;
}
}
}
class User
{
Login login = new Login();
protected string[] zvirata = {"Slon", "Tygr", "Lev", "Opice", "Medvěd"};
protected string[] vybeh = {"A1", "B1", "B2", "C1", "D1"};
protected char[] krmeni = {'n', 'n', 'n', 'n', 'n'};
protected string zprava;
public bool userLog;
private bool platnaVolba = false;
protected int index = 0;
protected int cislo_zvirete = 0;
public void Upravy()
{
userLog = login.UserLog();
/* userLog = true; takthle to funguje */
if (userLog)
{
System.Console.Clear();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("--------------Menu---------------");
Console.WriteLine("Zvirata - zobrazit zvířata");
Console.WriteLine("Vybeh - zobrazit výběhy zvířat");
Console.WriteLine("Krmeni - nakrmit zvířata");
while (!platnaVolba) //osetreni uziv. vstupu
{
switch (Console.ReadLine().ToLower())
{
case "zvirata": //vypis zvirat
foreach (string zvire in zvirata)
{
Console.WriteLine(zvire);
}
platnaVolba = true;
break;
case "vybeh": //vypis vybehu zvirat
foreach (string zvire_vybeh in vybeh)
{
index = Array.IndexOf(vybeh, zvire_vybeh); //ziskani indexu jednotky pole
if (index >= 0)
zprava = zvirata[index] + " " + vybeh[index] + "\n"; //zformovani zpravy
Console.WriteLine(zprava);
}
platnaVolba = true;
break;
case "krmeni": //nakrmeni zvirat
foreach(string s in zvirata)
{
cislo_zvirete++;
Console.WriteLine("{0} - {1}", cislo_zvirete, s);
}
Console.Write("Zadejte číslo zvířata které chcete nakrmit: ");
int indexKrmeni = int.Parse(Console.ReadLine());
indexKrmeni -= 1; //snizeni indexu (jinak by uzivatel musel pro prvni zvire zadat hodnotu 0)
krmeni[indexKrmeni] = 'y'; //prepsani
Console.WriteLine("{0} - nakrmeno", zvirata[indexKrmeni]);
platnaVolba = true;
break;
default:
Console.WriteLine("Neplatná volba, zadejte znovu");
break;
}
}
}
}
}
}
Tak teď už to je jasný kde je chyba.
Přesně v tomhle :
Login login = new Login();
Ty musíš předat do třídy User tvojí instanci Login aby to fungovalo.Ty
tam používáš prázdnou třídu proto to nešlo.
Můžeš jí předat například přes konstruktor např:
class User
{
Login login;
public User(Login login)
{
this.login = login;
}
}
A potom v Main jenom uděláš User user = new User(login);
Zobrazeno 14 zpráv z 14.