Share via


Wanneer algemene verzamelingen worden gebruikt

Het gebruik van algemene verzamelingen biedt u het automatische voordeel van typeveiligheid zonder dat u hoeft af te leiden van een basisverzamelingstype en typespecifieke leden te implementeren. Algemene verzamelingstypen presteren over het algemeen ook beter dan de overeenkomstige niet-generische verzamelingstypen (en beter dan typen die zijn afgeleid van niet-generische basisverzamelingstypen) wanneer de verzamelingselementen waardetypen zijn, omdat er bij generics geen elementen hoeven te worden gebruikt.

Voor programma's die zich richten op .NET Standard 1.0 of hoger, gebruikt u de algemene verzamelingsklassen in de System.Collections.Concurrent naamruimte wanneer meerdere threads items tegelijk aan de verzameling kunnen toevoegen of verwijderen. Houd ook rekening met de algemene verzamelingsklassen in de System.Collections.Immutable naamruimte wanneer onveranderbaarheid gewenst is.

De volgende algemene typen komen overeen met bestaande verzamelingstypen:

Aanvullende typen

Verschillende algemene verzamelingstypen hebben geen niet-generische tegenhangers. Deze omvatten het volgende:

  • LinkedList<T> is een gekoppelde lijst voor algemeen gebruik met O(1) invoeg- en verwijderingsbewerkingen.

  • SortedDictionary<TKey,TValue> is een gesorteerde woordenlijst met O(logboek n) invoeg- en ophaalbewerkingen, waardoor het een nuttig alternatief is voor SortedList<TKey,TValue>.

  • KeyedCollection<TKey,TItem> is een hybride verbinding tussen een lijst en een woordenlijst, die een manier biedt om objecten op te slaan die hun eigen sleutels bevatten.

  • BlockingCollection<T> implementeert een verzamelingsklasse met begrenzings- en blokkerende functionaliteit.

  • ConcurrentBag<T> biedt snelle invoeging en verwijdering van ongeordeerde elementen.

Onveranderbare opbouwfuncties

Wanneer u onveranderbaarheidsfunctionaliteit in uw app wenst, biedt de System.Collections.Immutable naamruimte algemene verzamelingstypen die u kunt gebruiken. Alle onveranderbare verzamelingstypen bieden Builder klassen die de prestaties kunnen optimaliseren wanneer u meerdere mutaties uitvoert. De Builder klasse batches bewerkingen in een veranderlijke status. Wanneer alle mutaties zijn voltooid, roept u de ToImmutable methode aan om alle knooppunten te "blokkeren" en een onveranderbare algemene verzameling te creƫren, bijvoorbeeld een ImmutableList<T>.

Het Builder object kan worden gemaakt door de niet-generische CreateBuilder() methode aan te roepen. Vanuit een Builder instantie kunt u aanroepen ToImmutable(). Op dezelfde manier kunt u vanuit de Immutable* verzameling aanroepen ToBuilder() om een opbouwfunctieexemplaren te maken op basis van de algemene onveranderbare verzameling. Hier volgen de verschillende Builder typen.

LINQ naar objecten

Met de functie LINQ naar objecten kunt u LINQ-query's gebruiken voor toegang tot in-memory objecten zolang het objecttype de System.Collections.IEnumerable of System.Collections.Generic.IEnumerable<T> interface implementeert. LINQ-query's bieden een gemeenschappelijk patroon voor toegang tot gegevens; zijn doorgaans beknopter en leesbaarder dan standaardlussen foreach ; en bieden mogelijkheden voor filteren, ordenen en groeperen. LINQ-query's kunnen ook de prestaties verbeteren. Zie LINQ naar objecten (C#) en LINQ naar objecten (Visual Basic) en Parallel LINQ (PLINQ) voor meer informatie.

Aanvullende functionaliteit

Sommige algemene typen hebben functionaliteit die niet wordt gevonden in de niet-generische verzamelingstypen. De klasse, die overeenkomt met de niet-generische ArrayList klasse, heeft bijvoorbeeld List<T> een aantal methoden die algemene gemachtigden accepteren, zoals de Predicate<T> gemachtigde waarmee u methoden kunt opgeven voor het zoeken in de lijst, de Action<T> gemachtigde die methoden vertegenwoordigt die op elk element van de lijst reageren en de Converter<TInput,TOutput> gemachtigde waarmee u conversies tussen typen kunt definiƫren.

Met List<T> de klasse kunt u uw eigen IComparer<T> algemene interface-implementaties opgeven voor het sorteren en doorzoeken van de lijst. De SortedDictionary<TKey,TValue> en SortedList<TKey,TValue> klassen hebben ook deze mogelijkheid. Bovendien kunt u met deze klassen vergelijkingen opgeven wanneer de verzameling wordt gemaakt. Op vergelijkbare wijze kunt u met de Dictionary<TKey,TValue> en KeyedCollection<TKey,TItem> klassen uw eigen gelijkheidsgelijkers opgeven.

Zie ook