Veľkonočná akcia je tu a s ňou aj extra kredity ZADARMO na náš interaktívny e-learning. Dobij si teraz kredity a posuň sa vo svojej kariére vpred!
Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 7. diel - PRIPOMIENKOVÉ narodenín v C # .NET WPF - Logická vrstva

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Marek
Člen
Avatar
Odpovedá na David Oczka
Marek:14.9.2017 21:02

Díky za odpověď. Kontroloval jsem tu Arénu a opravdu tam jsou všechny třídy internal, tak tam asi bude nějaká spojitost s vlastnostmi, jak píše David, jelikož atributy v Aréně fungovaly dobře..

 
Odpovedať
14.9.2017 21:02
Avatar
Jan Troják
Člen
Avatar
Jan Troják:25.11.2017 22:05

Nalezena chyba: v kodu ZbyvaDni je zbytečně vytvořená instance: 'DateTime dnes = DateTime.Today;'

Původní:

public int ZbyvaDni
{
        get
        {
                DateTime dnes = DateTime.Today;
                DateTime dalsiNarozeniny = Narozeniny.AddYears(Vek + 1);

                TimeSpan rozdil = dalsiNarozeniny - DateTime.Today;

                return Convert.ToInt32(rozdil.TotalDays);
        }
}

Opravené:

public int ZbyvaDni
{
        get
        {
                DateTime dalsiNarozeniny = Narozeniny.AddYears(Vek + 1);

                TimeSpan rozdil = dalsiNarozeniny - DateTime.Today;

                return Convert.ToInt32(rozdil.TotalDays);
        }
}
 
Odpovedať
+1
25.11.2017 22:05
Avatar
Odpovedá na Jan Troják
Michal Štěpánek:26.11.2017 10:01

Zbytečně vytvořená sice je, ale že by to byla nějaká ukrutná chyba, se mi nezdá...
stačí jen opravit toto

TimeSpan rozdil = dalsiNarozeniny - DateTime.Today;

na toto

TimeSpan rozdil = dalsiNarozeniny - dnes;
Editované 26.11.2017 10:02
Odpovedať
+2
26.11.2017 10:01
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Martin Komínek:3.1.2018 17:16

Ahoj, dnes když jsem napsal ObservableCollec­tion ve Visual Studiu, tak to tento typ kolekce neznalo. Pokud by jste měli podobný problém stačí nahoře napsat. using System.Collec­tions.ObjectMo­del.

 
Odpovedať
+6
3.1.2018 17:16
Avatar
Odpovedá na Martin Komínek
Krystof Matejka:18.3.2018 10:55

Díky, měl jsem podobný problém, ušetřilo mi to nějaký čas.

 
Odpovedať
18.3.2018 10:55
Avatar
Odpovedá na Martin Komínek
Michal Štěpánek:18.3.2018 21:49

Stačí tam tu "kolekci" napsat a po najetí myši na červeně podtržené slovo se objeví možnosti řešení, mezi kterými je i přidání potřebných usingů...

Odpovedať
+4
18.3.2018 21:49
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Andrej Ceperko:28.12.2019 20:13

zápis vlastnosti DnesniDatum

public DateTime DnesniDatum
{
        get
        {
                return DateTime.Now;
        }
}

sa dá skrátene zapísať aj takto:

public DateTime DnesniDatum { get; } = DateTime.Now;

To len pre zaujímavosť.
Originálny zápis je síce rozsiahlejší, ale zato edukatívnejší :-)

 
Odpovedať
28.12.2019 20:13
Avatar
Odpovedá na Andrej Ceperko
Michal Štěpánek:29.12.2019 9:40

To je samozřejmě pravda, ale tento článek vznikl v době, kdy takový zápis ještě nebyl možný (myslím, že je to možné až od verze C# 6) a hlavně bych řekl, že pro začátečníka je ten "delší" zápis lépe srozumitelný...

Odpovedať
29.12.2019 9:40
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovedá na Andrej Ceperko
Ondřej Štorc:29.12.2019 16:19

Tyhle kódy bohužel nedělají totéž. Když pustíš tenhle kód:

 class A
    {
        public DateTime X { get; } = DateTime.Now;

        public DateTime Y
        {
            get { return DateTime.Now; }
        }
    }

// ....

A a = new A();

Console.WriteLine(a.X == a.X);
Console.WriteLine(a.Y == a.Y);

tak (i přes upozornění od Rideru, který tvrdí že se dají oba výrazy nahradit za true...) dostaneš na výstupu True a potom False.

Důvodem je to že vlastnost X se neinicializuje při vytvoření instance A, tudíž pro všechny dotazy má stejnou hodnotu. Ale zato vlastnost Y se při každém dotazu na ní koukne co v sobě zrovna má vlastnost DateTime.Now. Y by se dal zkrátit na:

public DateTime Y => DateTime.Now;

což jsi možná měl na mysli...

Odpovedať
+1
29.12.2019 16:19
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovedá na Ondřej Štorc
Andrej Ceperko:30.12.2019 13:31

Ďakujem za upozornenie.
Máš pravdu. Príkazy, ktoré som považoval za totožné, majú rozdielný význam.
Lepšie je to vidieť, keď namiesto tvojho porovnania:

A a = new A();

Console.WriteLine(a.X == a.X);
Console.WriteLine(a.Y == a.Y);

ich 2x vypíšeš a medzi výpismi uspíš vlákno:

A a = new A();

Console.WriteLine(a.X);
Console.WriteLine(a.Y);

Thread.Sleep(3000);

Console.WriteLine(a.X);
Console.WriteLine(a.Y);

hodnota X sa nezmení a hodnota Y sa vyhodnocuje pri každom zavolaní

 
Odpovedať
30.12.2019 13:31
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 30.