Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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 7 - Upomínač narozenin v C# .NET WPF - Logická vrstva

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
Marek
Člen
Avatar
Odpovídá 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..

 
Odpovědět
14.9.2017 21:02
Avatar
Jan Troják
Brigádník
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);
        }
}
 
Odpovědět
25.11.2017 22:05
Avatar
Odpovídá 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;
Editováno 26.11.2017 10:02
Odpovědět
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.

 
Odpovědět
3.1.2018 17:16
Avatar
Odpovídá 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.

 
Odpovědět
18.3.2018 10:55
Avatar
Odpovídá 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ů...

Odpovědět
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ší :-)

 
Odpovědět
28.12.2019 20:13
Avatar
Odpovídá 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ý...

Odpovědět
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
Odpovídá 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...

Odpovědět
29.12.2019 16:19
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá 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í

 
Odpovědět
30.12.2019 13:31
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 30.