Běžně používané typy kolekcí
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 ICollection rozhraních 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 nebo IList 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ů.
Queue<T> Třídy Queue poskytují seznamy first-in-first-out. Stack<T> Třídy Stack poskytují seznamy typu last-in-first-out.
Silné psaní
Obecné kolekce jsou nejlepším řešením silného psaní. 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ů obsahuje abstraktní základní třídy, které můžete rozšířit o vytváření tříd kolekce, které jsou silného typu. 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 prvku nebo Dictionary<TKey,TValue> ho můžete přistupovat pouze pomocí klíče elementu.
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 konstruktorům, jako foreach
jsou 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).
Příbuzná 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 kolekce Hashtable a Dictionary | Popisuje funkce obecných a negenerických typů slovníků založených na hodnotě hash. |
Typy řazených kolekcí | Popisuje třídy, které poskytují funkce řazení pro seznamy a sady. |
Obecné typy | 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. |
Reference
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>