Veelgebruikte verzamelingstypen
Verzamelingstypen vertegenwoordigen verschillende manieren om gegevens te verzamelen, zoals hash-tabellen, wachtrijen, stapels, tassen, woordenlijsten en lijsten.
Alle verzamelingen zijn gebaseerd op de ICollection of ICollection<T> interfaces, hetzij direct of indirect. IList en IDictionary hun generieke tegenhangers zijn allemaal afgeleid van deze twee interfaces.
In verzamelingen op IList basis van of rechtstreeks op ICollection, bevat elk element slechts een waarde. Deze typen omvatten:
In verzamelingen op basis van de IDictionary interface bevat elk element zowel een sleutel als een waarde. Deze typen omvatten:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
De KeyedCollection<TKey,TItem> klasse is uniek omdat het een lijst met waarden is met sleutels die zijn ingesloten in de waarden. Als gevolg hiervan gedraagt het zich zowel als een lijst als als een woordenlijst.
Wanneer u efficiënte toegang tot verzamelingen met meerdere threads nodig hebt, gebruikt u de algemene verzamelingen in de System.Collections.Concurrent naamruimte.
De Queue en Queue<T> klassen bieden first-in-first-out-lijsten. De Stack en Stack<T> klassen bieden lijsten met laatste in eerste instantie.
Sterk typen
Algemene verzamelingen zijn de beste oplossing voor sterk typen. Als u bijvoorbeeld een element van een ander type dan een Int32 aan een List<Int32>
verzameling toevoegt, wordt een compilatiefout veroorzaakt. Als uw taal echter geen generieken ondersteunt, bevat de System.Collections naamruimte abstracte basisklassen die u kunt uitbreiden om verzamelingsklassen te maken die sterk zijn getypt. Deze basisklassen zijn onder andere:
Hoe verzamelingen variëren
Verzamelingen variëren in hoe ze elementen opslaan, sorteren en vergelijken en hoe ze zoekopdrachten uitvoeren.
De SortedList klasse en de SortedList<TKey,TValue> algemene klasse bieden gesorteerde versies van de Hashtable klasse en de Dictionary<TKey,TValue> algemene klasse.
Alle verzamelingen gebruiken op nul gebaseerde indexen, behalve Array, waardoor matrices die niet op nul zijn gebaseerd, zijn toegestaan.
U kunt toegang krijgen tot de elementen van een SortedList of een KeyedCollection<TKey,TItem> door de sleutel of de index van het element. U hebt alleen toegang tot de elementen van een Hashtable of een Dictionary<TKey,TValue> element met de sleutel van het element.
LINQ gebruiken met verzamelingstypen
De functie LINQ naar objecten biedt een gemeenschappelijk patroon voor toegang tot in-memory objecten van elk type dat wordt geïmplementeerd IEnumerable of IEnumerable<T>. LINQ-query's hebben verschillende voordelen ten opzichte van standaardconstructies zoals foreach
lussen:
- Ze zijn beknopt en gemakkelijker te begrijpen.
- Ze kunnen gegevens filteren, orden en groeperen.
- Ze kunnen de prestaties verbeteren.
Zie LINQ naar objecten (C#) en LINQ naar objecten (Visual Basic) en Parallel LINQ (PLINQ) voor meer informatie.
Verwante onderwerpen
Title | Beschrijving |
---|---|
Verzamelingen en gegevensstructuren | Hierin worden de verschillende verzamelingstypen besproken die beschikbaar zijn in .NET, waaronder stacks, wachtrijen, lijsten, matrices en woordenlijsten. |
Typen hashtabel- en woordenlijstverzameling | Hierin worden de functies van algemene en niet-generische hash-woordenlijsttypen beschreven. |
Gesorteerde verzamelingstypen | Beschrijft klassen die sorteerfunctionaliteit bieden voor lijsten en sets. |
Generics | Hierin worden de algemene functies beschreven, waaronder de algemene verzamelingen, gemachtigden en interfaces van .NET. Bevat koppelingen naar functiedocumentatie voor C#, Visual Basic en Visual C++, en naar ondersteunende technologieën zoals reflectie. |
Verwijzing
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>