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


Zobrazeno 11 zpráv z 11.
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.


Ano, tvoje odpověď na otázku 1 je dobře.
Jelikož evidentně nemá Cislo implementaci ToString(), tak konzole prostě vypíše kompletní identifikátor včetně názvu programu.
10 a 11 má být co? Jako ukázat, že v paměti jsou pouze 2 instance třídy ale 4 instance struktury?
Čistě ze zvědavosti, kde studuješ?
U 6) to napíše kompletní identifikátor, ale ne 0, je to v pořádku?
U 7) to napíše kompletní identifikátor, ale ne 0, je to v pořádku?
U
to napíše kompletní
identifikátor, ale ne Null, je to v pořádku?
10 a 11 je podle mě od toho, abychom nakreslili, že v případě referenčního typu bude přímo v paměti napsaná adresa, kde je uložená proměnná, ale v případě struktury do adresy rovnou napsat hodnotu
Studuju na UTB. Jestli na to ještě koukneš a zodpovíš mé otázky, moc
mi pomůžeš. Děkuji 
Aha, tak s tím null jsem se spletl.
No jelikož si to přímo zkoušíš a vidíš co to udělá, tak to v
pořádku bude 
Děkuji. A k té 10. a 11. ještě jen.
Mohlo by to takhle být? Jestli je tam správný počet instancí a hodnoty v
paměti? (viz. obrázek)
Díky za odpověď. Tohle je už moje poslední žádost o pomoct. 
Tyjo upřímně jsem se do toho teď zamotal.
Po posledním projetí v tom vidím jednu instanci třídy, protože sice jsi konstruktor volal 2x, ale do proměnné "f" hned po vytvoření instance dáváš referenci na "d". Tím pádem tu nově vytvořenou instanci seřere garbage collector, protože na ní nic neodkazuje.
Každopádně bych to vyzkoušel pomocí metody ReferenceEquals(), díky které zjistíš, jestli jde o stejné instance.
Btw jestli tě to celé mate, tak si z toho nic nedělej. V C# jsem pracovně dělal pár let a netuším, jakou má praktickou hodnotu takovéto zmatené přepisování proměnných jinými instancemi...
Tak vyzkoušel jsem RefernceEquals() a ukazuje to true ať zadám jakoukoliv
kombinaci. Podle toho soudím, že v posledním obrázku pro Třídy by mělo
být ještě c a všechny by měli ukazovat na stejnou referenci (takže
vlastně tak jak je to v obrázku) a v ní by měla být hodnota null podle
posledního kroku, kde jsme použili vynuluj, že ano? 
To je zamotané 
"c" je nastavené na null, takže to nereferencuje žádnou instanci.
Hele neumí VS v nových verzích zobrazovat přímo objekty programu v
nějakém debug okně? To by asi dost pomohlo 
Áno, tvoj posledný príspevok to opisuje správne. V prípade, že je Cislo trieda, tak všetky premenné c, d, e, f ukazujú na jednu adresu v pamäti (konkrétne na halde), na ktorej je hodnota null.
Mimochodom, pokiaľ Cislo (či už trieda, alebo štruktúra) nemá
preťaženú metódu ToString, tak pri výpise budú premenné typu Cislo stále
vypisovať len meno svojho typu (čiže niečo ako ConsoleApp.Cislo alebo v
tvojom prípade ConsoleApp3.Program.Cislo). To sú tie tvoje "nesmysly".
Moreover, pokiaľ je hodnota danej premennej null, nemalo by sa vypísať vôbec
nič.
Pre výpis premennej hodnota daného objektu / štruktúry typu Cislo treba buď
ToString preťažiť, alebo stále vypisovať pomocou menoPremennej.hodnota
.
Ad Filip Němeček - toto nie je o zmätenom prepisovaní premenných, ani to nie je vôbec o C#. Je to o tom, že chalan sa musí naučiť rozdiel medzi hodnotou a referenciou, medzi pamäťou na stacku a na heape atď. Bude to potrebovať takmer vo všetkých programovacích jazykoch. Pokiaľ v tom bude len tápať, tak akonáhle použije niekde priradenie, bude mať zaděláno na kopu logických chýb typu "túto premennú som prepísal, ale mimo funkcie sa jej obsah nezmenil", prípadne "tu som s tou premennou pracoval len vo vnútri funkcie, ale zmenil sa obsah aj tejto premennej mimo nej". Tvrdiť mu, že to nemá praktický zmysel ho akurát odradí od toho, aby tomu venoval pozornosť.
Pre niekoho je to možno náročnejšie na pochopenie (u nás sa to berie
ešte na gympli a vidím tú pohromu first hand), ale jednoznačne to každý
potrebuje zvládnuť, kým mu niekto dá čokoľvek praktické pod ruku. A
modliť sa, aby predtým nemusel náhodou pracovať s jazykom, ktorý sa sám
nestará o memory management 
Děkuji za rozsáhlou odpověď. Obecně jsem měl jasno, jen s těmi
referenčními typy ne tak úplně, ovšem teď už to je úplně jasné.
Tak zítra a zkoušku, ještě jednou díky za pomoc.
Zobrazeno 11 zpráv z 11.