Klasse System.Collections.Generic.HashSet<T>

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.