Naučit se PHP Naučit se PHP
Pouze tento týden až 80 % sleva na vývoj webů v PHP.
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"
Avatar
Filip Zeman
Člen
Avatar
Filip Zeman:4.11.2018 16:59

Zdravím. Mám třídu:

class GlobalNote
    {
        public List<string> userNotes = new List<string>();
        public List<string> adminNotes = new List<string>();

        public void CreateUserNote(string text)
        {
            userNotes.Add(text);
        }

        public void CreateAdminNote(string text)
        {
            adminNotes.Add(text);
        }

        public void WriteUserNotes()
        {
                foreach (string n in userNotes)
                {
                    Console.WriteLine(DateTime.Now + n);
                }

        }

        public void WriteAdminNotes()
        {
            if (adminNotes.Count() > 0)
            {
                foreach (string n in adminNotes)
                {
                    Console.WriteLine(DateTime.Now + n);
                }
            }
        }


    }

Když přidám do listu kolik stringů chci, tak pak stejně při zavolání metody WriteUserNotes() se nic nevypíše. Dokonce jsem udělal podmínku a zjistil jsem, že v listu je pořád 0 věcí.

Pak to volám takhle:

while (choice != 7)
{

    Console.WriteLine();
    Console.WriteLine("-------{0}------- {1}", CompanyInfo.CompanyName, DateTime.Now);
    Console.WriteLine("1 - Register");
    Console.WriteLine("2 - Log in");
    Console.WriteLine("3 - Manage users");
    Console.WriteLine("4 - Manage salaries");
    Console.WriteLine("5 - Log out");
    Console.WriteLine("6 - Diary");
    Console.WriteLine("7 - End application");
    Console.WriteLine("--------------------");
    globalNote.WriteUserNotes();
                    ...

Děkuji za rady.

Zkusil jsem: Zkoušel jsem vše, co mě napadlo. Zkoušet volat metodu jinde, nějak jinak to zabalit, ale už jsem bez nápadů.

Chci docílit: Chci jednoduše vypsat všechny notes v daném listu.

 
Odpovědět 4.11.2018 16:59
Avatar
Odpovídá na Filip Zeman
Matúš Olejník:4.11.2018 17:12

Ukáž celý kus kódu aj kde vkladáš niečo do toho listu :) teda niekde musíš volať CreateUserNote

Nahoru Odpovědět 4.11.2018 17:12
/* I am not sure why this works but it fixes the problem */
Avatar
Filip Zeman
Člen
Avatar
Filip Zeman:4.11.2018 17:33
               while (choice != 4)
                {
                    Console.WriteLine();
                    Console.WriteLine(DateTime.Now);
                    Console.WriteLine("1 - Send Salaries");
                    Console.WriteLine("2 - Send money to employee");
                    Console.WriteLine("3 - Send 1% of revenue to employee");
                    Console.WriteLine("4 - Back");
                    while (!int.TryParse(Console.ReadLine(), out choice))
                    {
                        Console.WriteLine("Invalid choice. Try again.");
                    }
                    switch (choice)
                    {
                        case 1:
                            globalNote.CreateUserNote("Salaries has been send.");
                            Console.WriteLine("Salaries has been send.");
                            Console.WriteLine(globalNote.userNotes.Count);
                            break;
...

Tady by se do listu měl vložit napsaný string. Zkoušel jsem i vypsat počet stringů v listu po každém přidání a číslo se zvětšovalo, čili v listu něco bylo, ale stále se nic nevypisovalo.

 
Nahoru Odpovědět 4.11.2018 17:33
Avatar
Odpovídá na Filip Zeman
Matúš Olejník:4.11.2018 18:04

Priznám sa že z týchto kúskov neviem či ti poradím. Si si istý že pred tým než ideš vypísať obsah toho listu skutočne vojdeš aj do tejto vetvy kde pridáš záznam a medzi tým nijako neprepíšeš ten objekt GlobalNote? Možno ukáž celý kód vidím že tam máš veľa cyklov, podmienok atď.

Nahoru Odpovědět 4.11.2018 18:04
/* I am not sure why this works but it fixes the problem */
Avatar
Filip Zeman
Člen
Avatar
Filip Zeman:4.11.2018 18:09

Díky za odpověď. Můžu ti rovnou poslat odkaz na github. :) https://github.com/zemanf6/Members
Všechno se vlastně děje jenom ve třídách Salaries, GlobalNote a Program.

 
Nahoru Odpovědět 4.11.2018 18:09
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Filip Zeman
ostrozan:4.11.2018 18:16

První bych zkusil dát breakpoint do té metody CreateAdminNote abys věděl, že ti to tam vůbec skočí a pak když si ukážeš myší na adminNotes, tak se ti ukáže, kolik má členů a co v nich je.

 
Nahoru Odpovědět 4.11.2018 18:16
Avatar
Odpovídá na Filip Zeman
Matúš Olejník:4.11.2018 18:42

V Program triede inicializuješ objekt GlobalNote a snažíš sa z neho vypísať obsah toho listu, avšak v database.Mana­geSalaries() tiež znova inicializuješ objekt GlobalNote a na ňom voláš metódu CreateUserNote takže ak to chceš v Program triede potom vypísať nevypíše sa nič pretože sú to dva rozdielne objekty. Pošli ten GlobalNote do ManageSalaries z triedy Program a v ManageSalaries vymaž tú inicializáciu (napr.) :)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 4.11.2018 18:42
/* I am not sure why this works but it fixes the problem */
Avatar
Filip Zeman
Člen
Avatar
Filip Zeman:4.11.2018 18:56

Omlouvám se, ale asi jsem nějak zapomněl jak na to. Odstranil jsem teda instanci z třídy Database(Mana­geSalaries) a mám už jenom tu v Program.cs. Jak teda udělám, aby třídy Program.cs a Database.cs využívali stejnou instanci a nechám deklaraci instance v Program.cs?

 
Nahoru Odpovědět 4.11.2018 18:56
Avatar
Odpovídá na Filip Zeman
Matúš Olejník:4.11.2018 19:00

Pridaj parameter do tej metódy takže namiesto novoinicializo­vaného GlobalNote budeš používať ten čo ti príde ako parameter ;)

Nahoru Odpovědět 4.11.2018 19:00
/* I am not sure why this works but it fixes the problem */
Avatar
Filip Zeman
Člen
Avatar
Filip Zeman:4.11.2018 19:04

Děkuji moc za trpělivost. Při dalších projektech už budu chytřejší a přeci jenom o tom to je. :)

 
Nahoru Odpovědět  +2 4.11.2018 19:04
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 10.