NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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í.

Diskuze – Lekce 3 - Hrací kostka v C# - Zapouzdření, konstruktor a Random

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Jan Troják
gcx11:22.7.2017 15:30

Do proměnné na levé straně, se ukládá výraz z pravé strany.

pocetSten = this.pocetSten;

Do proměnné si uložíš hodnotu z objektu, ale po opuštění metody se proměnná přestane existovat, takže se vlastně kromě zbytečného přiřazení nic nestane.

this.pocetSten = pocetSten;

Naopak toto změní hodnotu uloženou v objektu a proměnná v objektu nadále existuje i po opuštění metody.

 
Odpovědět
+1
22.7.2017 15:30
Avatar
Jan Troják
Člen
Avatar
Odpovídá na gcx11
Jan Troják:22.7.2017 22:30

díky

 
Odpovědět
22.7.2017 22:30
Avatar
Marek
Člen
Avatar
Marek:25.7.2017 12:03

Ahoj, v článku se píše: "Vždy si vytvořte jednu sdílenou instanci generátoru (např. do privátního atributu pomocí konstruktoru) a na té potom metodu Next() volejte."

Je tedy lepší mít pro každou instanci vlastní privátní random nebo ten random udělat statický, aby se opravdu vytvořil pouze jednou ?

Díky za názory.

 
Odpovědět
25.7.2017 12:03
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Marek
David Hartinger:25.7.2017 12:30

Když jsi to odcitoval, tak si to přečti ještě jednou. Je tam napsané "jednu sdílenou", ne "pro každou instanci vlastní".

Odpovědět
25.7.2017 12:30
New kid back on the block with a R.I.P
Avatar
Odpovídá na Marek
Neaktivní uživatel:25.7.2017 12:40

Jednu sdílenou pro všechny instance (mělo by tam asi být např. do privátního statického atributu pomocí statického konstruktoru). Pokud uděláš pro každou instanci Kostky jiný Random objekt, riskuješ, že když vytvoříš dvě kostky těsně po sobě, že budou vracet stejná čísla.

Odpovědět
+1
25.7.2017 12:40
Neaktivní uživatelský účet
Avatar
Marek
Člen
Avatar
Odpovídá na Neaktivní uživatel
Marek:25.7.2017 13:39

Ahoj Davide, Lukáši,

díky za rychlou odpověď. Hledal jsem si něco o statickém konstruktoru a dle toho napsal ukázku třídy níže, doufám, že to není úplná blbost :-)

class GeneratorVet
    {
        private static Random random;

        static GeneratorVet()
        {
            random = new Random();
        }
      // Zde bude následovat další kód - vlastnosti, standardní konstruktor a metody ?
    }
 
Odpovědět
+1
25.7.2017 13:39
Avatar
Odpovídá na Marek
Neaktivní uživatel:25.7.2017 14:01

Je to v pořádku. Bohatě ale stačí:

class GeneratorVet
    {
        private static Random random = new Random();

      // Zde bude následovat další kód - vlastnosti, standardní konstruktor a metody ?
    }

Je v tom rozdíl, kterým se absolutně nemusíš zabývat, ale kdyžtak: http://csharpindepth.com/…eldinit.aspx

Odpovědět
25.7.2017 14:01
Neaktivní uživatelský účet
Avatar
Marek
Člen
Avatar
Odpovídá na Neaktivní uživatel
Marek:25.7.2017 14:19

Přesně tak jsem to chtěl původně napsat. Už vím, že v tom nějaký rozdíl je, tak se tím musím zabývat, dokud to nepochopím :)

Díky za super rady a odkaz na zajímavé čtení.

 
Odpovědět
25.7.2017 14:19
Avatar
Dan Golas LegoIas:16.8.2017 1:13

Myslím že by bylo dobré doplnit, jak to vlastně je s tím statickým generátorem. Je to jen malá úprava v programu a vzhledem k tomu že budeme používat hned dvě kostky, je to ideální příležitost si to vysvětlit. Navíc většina lidí se tu stejně pozastaví a bude to hledat po svém, jako třeba já. :D
Mimochodem vaše návody mi moc pomáhají a za to vám děkuji. :)

 
Odpovědět
16.8.2017 1:13
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
pocitac770:16.8.2017 2:47

Sem se právě ani statika netahá, David ji okrajově vysvětluje až později, to jsou zase ty konspirační teorie v komentech...
To, co tam bylo napsáno odkazuje na návrh celé aplikace po dokončení, tedy to, že si vytvoříme jednu kostku, logicky s jedním Ranodm objektem, a tu předáváme všem "uživatelům" - jedna stačí na celý program... Tak je to řešeno, aby se začátečníci zabývat statikou, která to celé ještě více zamíchá, zvláště, když jsou teprve v základech OOP...

 
Odpovědět
16.8.2017 2:47
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 10 zpráv z 154.