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í.
Avatar
Majkel
Člen
Avatar
Majkel:19.10.2015 15:45

Ahoj,

chtěl bych se zeptat, v kterých případech je vhodné používat IEnumerable, ICollection nebo List. Například, mám metodu, z které chci vrátit kolekci dat. Mám ji vracet jako List, nebo jako IEnumerable? Jediné co vím je, že List má na sobě více metod, jak lze pracovat s kolekcí. Takže když je nepotřebuji, můžu použít jen IEnumerable. To ale určitě nebude všechno.

Mohl by mi to někdo trochu více přiblížit? Díky :-)

 
Odpovědět
19.10.2015 15:45
Avatar
Odpovídá na Majkel
Neaktivní uživatel:19.10.2015 16:27

Na tohle nenajdeš žádnou definitivní odpověd. Já osobně si myslím, že nejlepší je z metod vracet to nejjednodušší rozhraní, co potřebuješ, a nechat uživatele metody, ať si výsledek dosadí do jakýho typu chce. Ve většině případů je tak nejlepší vracet IEnumerable<T>. Pokud bude uživatel například dávad výsledky do foreach cyklu, tak mu na to stačí jen to IEnumerable<T>, ale může to jednoduše převést i na List<T>, pokud by bylo potřeba.
Pokud si ale píšeš nějakou metodu pro sebe a očekáváš vrácenej list, pak není problém vracet přímo List<T>.

Nahoru Odpovědět
19.10.2015 16:27
Neaktivní uživatelský účet
Avatar
Milan Křepelka
Tvůrce
Avatar
Milan Křepelka:19.10.2015 17:09

Souhlasím vesměs s Jakubem, že na tohle není definitivní, absolutně správná odpověď. Zajímavé rozdíly můžou nastat až to publikuješ pro někoho cizího.

Pak je rozdíl nezi IEnumerable a Listem podstatný. S IEnumerable dáváš jasně najevo, že si nepřeješ, aby se ti někdo šťoural ve vnitřku tvého objektu. Tedy pokud se nenajde "specialista", který si to převede na List.

Editováno 19.10.2015 17:10
 
Nahoru Odpovědět
19.10.2015 17:09
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Majkel
Petr Čech:19.10.2015 17:19

IEnumerable se většinou používá jako návratový typ metod, které vrací kolekci, třeba proto, že se dá použít yield return.
List se používá většinou na vlastnosti, ale na takové ty jednoduché, kde to má být prostě kolekce, se kterou se dá nějak rozumně pracovat.

Nahoru Odpovědět
19.10.2015 17:19
the cake is a lie
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 4 zpráv z 4.