IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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 1 - Úvod do kolekcí a genericita

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
Karel Vyborny:20. května 9:29

Rozporoval bych úvodní tvrzení : Nevýhodou je, že sama kolekce skutečný datový typ prvků nezná a proto umí prvky navracet jen jako obecné objekty. Po získání prvku z kolekce si jej tedy musíme přetypovat.

C# navrátí prvek kolekci i bez toho :

ArrayList list = new ArrayList();
list.Add("položka");
Console.WriteLine(list[0]);
 
Odpovědět
20. května 9:29
Avatar
Karel Vyborny:20. května 12:22

naprosto nevhodný začátek , soustřeďuje se na pokročilé úvahy a úplně opomíjí smysl kolekcí, který bude začátečníky spíš zajímat

 
Odpovědět
20. května 12:22
Avatar
Odpovídá na Karel Vyborny
Petr Štechmüller:20. května 13:34

Ahoj, tady je to myšleno primárně při získávání prvků z kolekce. To co jsi ty napsal je v pořádku.

Zkus ale následující příklad:

ArrayList list = new ArrayList();
list.Add("polozka");

String polozka = list[0];
Console.WriteLine(polozka);

Tohle už nebude fungovat, protože list neví, že na indexu 0 je hodnota typu String.

Odpovědět
20. května 13:34
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Karel Vyborny:20. května 17:11

rozumím, ale proč bych předpokládal, že by mělo jít o string, když budu mít obecné pole ? Můžu s prvkem pole pracovat jako s (obecným) objektem a když budu chtít string - mohu pretypovat bez problemu, ne ?

ArrayList list = new ArrayList();
list.Add("polozka");

object polozka = list[0];
string prevedenej = Convert.ToString(list[0]);
Console.WriteLine(polozka);
Console.WriteLine(prevedenej);
 
Odpovědět
20. května 17:11
Avatar
Odpovídá na Karel Vyborny
Petr Štechmüller:20. května 17:38

Volání Convert.ToString(list[0]) může docela nadělat paseku u "komplexnějších" objektů.

Řekněme, že budeš mít kolekci uživatelů, kde každý uživatel má třeba "jmeno" a "datum registrace".

Teď budeš chtít projít tuto kolekci a najít uživatele se jménem "franta".
Pokud nebudeš mít typováno, nedostaneš se k odpovídajícím vlastnostem a budeš nucen získanou hodnotu pokaždé přetypovat.

Další problém je, že netypová kolekce ti dovolí vkládat "uživatele" a třeba "auta" do jedné kolekce. No a když pak budeš chtít takovou kolekci procházet, budeš mít problém se zpracováním, protože by obsahovala různé datové typy.

Odpovědět
20. května 17:38
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
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 5 zpráv z 25.