Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Typy kolekcí představují různé způsoby shromažďování dat, jako jsou tabulky hash, fronty, zásobníky, tašky, slovníky a seznamy.
Všechny kolekce jsou založené na rozhraních ICollection nebo ICollection<T>, a to buď přímo, nebo nepřímo. IList a IDictionary jejich obecné protějšky jsou odvozeny z těchto dvou rozhraní.
V kolekcích založených na IList nebo přímo na ICollection každý prvek obsahuje pouze hodnotu. Mezi tyto typy patří:
V kolekcích založených na IDictionary rozhraní obsahuje každý prvek klíč i hodnotu. Mezi tyto typy patří:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
Třída KeyedCollection<TKey,TItem> je jedinečná, protože se jedná o seznam hodnot s klíči vloženými do hodnot. V důsledku toho se chová jako seznam i jako slovník.
Pokud potřebujete efektivní přístup ke kolekci s více vlákny, použijte obecné kolekce v System.Collections.Concurrent oboru názvů.
Třídy Queue a Queue<T> poskytují seznamy první dovnitř, první ven. Třídy Stack a Stack<T> poskytují seznamy typu poslední dovnitř, první ven.
Silné psaní
Obecné kolekce jsou nejlepším řešením silného typování. Například přidání prvku jiného typu než Int32 do List<Int32>
kolekce způsobí chybu v době kompilace. Pokud však váš jazyk nepodporuje obecné typy, System.Collections obor názvů zahrnuje abstraktní základní třídy, které můžete rozšířit pro vytvoření silně typovaných tříd kolekce. Mezi tyto základní třídy patří:
Jak se kolekce liší
Kolekce se liší v tom, jak ukládají, seřadí a porovnávají prvky a jak provádějí vyhledávání.
Třída SortedList a SortedList<TKey,TValue> obecná třída poskytují seřazené verze Hashtable třídy a Dictionary<TKey,TValue> obecné třídy.
Všechny kolekce používají indexy založené na nule s výjimkou Array, které umožňují pole, která nejsou založená na nule.
K prvkům objektu SortedList nebo objektu KeyedCollection<TKey,TItem> můžete přistupovat pomocí klíče nebo indexu elementu. K prvkům Hashtable nebo Dictionary<TKey,TValue> můžete přistupovat pouze pomocí jejich klíče.
Použití LINQ s typy kolekcí
Funkce LINQ to Objects poskytuje běžný vzor pro přístup k objektům v paměti libovolného typu, který implementuje IEnumerable nebo IEnumerable<T>. Dotazy LINQ mají oproti standardním konstruktům, jako foreach
smyčky, několik výhod:
- Jsou stručné a srozumitelnější.
- Můžou filtrovat, uspořádat a seskupovat data.
- Můžou zlepšit výkon.
Další informace najdete v tématu LINQ to Objects (C#),LINQ to Objects (Visual Basic) a Parallel LINQ (PLINQ).
Související témata
Titulek | Popis |
---|---|
Kolekce a datové struktury | Popisuje různé typy kolekcí dostupné v .NET, včetně zásobníků, front, seznamů, polí a slovníků. |
Typy kolekcí Hashtable a Dictionary | Popisuje funkce obecných a negenerických typů slovníků založených na hodnotě hash. |
Seřazené typy kolekcí | Popisuje třídy, které poskytují funkce řazení pro seznamy a sady. |
Generika | Popisuje obecnou funkci, včetně obecných kolekcí, delegátů a rozhraní poskytovaných rozhraním .NET. Obsahuje odkazy na dokumentaci k funkcím pro C#, Visual Basic a Visual C++ a na podpůrné technologie, jako je reflexe. |
Odkazy
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>