Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
In dit artikel vindt u aanvullende opmerkingen in de referentiedocumentatie voor deze API.
De HashSet<T> klasse biedt krachtige setbewerkingen. Een set is een verzameling die geen dubbele elementen bevat en waarvan de elementen zich in geen bepaalde volgorde bevinden.
De capaciteit van een HashSet<T> object is het aantal elementen dat het object kan bevatten. De capaciteit van een HashSet<T> object wordt automatisch verhoogd naarmate elementen aan het object worden toegevoegd.
De HashSet<T> klasse is gebaseerd op het model van wiskundige sets en biedt krachtige setbewerkingen die vergelijkbaar zijn met toegang tot de sleutels van de Dictionary<TKey,TValue> of Hashtable verzamelingen. In eenvoudige termen kan de HashSet<T> klasse worden beschouwd als een Dictionary<TKey,TValue> verzameling zonder waarden.
Een HashSet<T> verzameling is niet gesorteerd en kan geen dubbele elementen bevatten. Als duplicatie van volgorde of element belangrijker is dan prestaties voor uw toepassing, kunt u overwegen om de List<T> klasse samen met de Sort methode te gebruiken.
HashSet<T> biedt veel wiskundige setbewerkingen, zoals optellen (samenvoegingen) en aftrekking instellen. De volgende tabel bevat de opgegeven HashSet<T> bewerkingen en de bijbehorende wiskundige equivalenten.
| HashSet-bewerking | Wiskundig equivalent |
|---|---|
| UnionWith | Unie of verzamelingstoename |
| IntersectWith | Kruispunt |
| ExceptWith | Aftrekken instellen |
| SymmetricExceptWith | Symmetrisch verschil |
Naast de vermelde setbewerkingen biedt de HashSet<T> klasse ook methoden voor het bepalen van gelijkheid van sets, overlapping van sets en of een set een subset of superset van een andere set is.
Alleen .NET Framework: Voor zeer grote HashSet<T> objecten kunt u de maximale capaciteit verhogen tot 2 miljard elementen op een 64-bits systeem door het enabled kenmerk van het <gcAllowVeryLargeObjects> configuratie-element true in te stellen in de runtime-omgeving.
Met de klasse HashSet<T> wordt de ISet<T>-interface geïmplementeerd.
HashSet- en LINQ-setbewerkingen
LINQ biedt toegang tot de Distinct, Union, Intersect en Except verzamelingsbewerkingen voor elke gegevensbron die de IEnumerable of IQueryable interfaces implementeert.
HashSet<T> biedt een grotere en krachtigere verzameling setbewerkingen. Biedt bijvoorbeeld HashSet<T> vergelijkingen zoals IsSubsetOf en IsSupersetOf.
Het belangrijkste verschil tussen LINQ-setbewerkingen en HashSet<T> bewerkingen is dat LINQ-setbewerkingen altijd een nieuwe IEnumerable<T> verzameling retourneren, terwijl de HashSet<T> equivalente methoden de huidige verzameling wijzigen.
Als u normaal gesproken een nieuwe set moet maken of als uw toepassing alleen toegang nodig heeft tot de opgegeven setbewerkingen, is het gebruik van LINQ-setbewerkingen voor een IEnumerable<T> verzameling of matrix voldoende. Als uw toepassing echter toegang nodig heeft tot aanvullende setbewerkingen of als het niet wenselijk of noodzakelijk is om een nieuwe verzameling te maken, gebruikt u de HashSet<T> klasse.
In de volgende tabel ziet u de HashSet<T> bewerkingen en de bijbehorende LINQ-setbewerkingen.
| HashSet-bewerking | LINQ-equivalent |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| Niet opgegeven. | Distinct |
| SymmetricExceptWith | Niet opgegeven. |
| Overlaps | Niet opgegeven. |
| IsSubsetOf | Niet opgegeven. |
| IsProperSubsetOf | Niet opgegeven. |
| IsSupersetOf | Niet opgegeven. |
| IsProperSupersetOf | Niet opgegeven. |
| SetEquals | Niet opgegeven. |