Sdílet prostřednictvím


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ří:

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).

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

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>