Dela via


Samlingstyper som används ofta

Samlingstyper representerar olika sätt att samla in data, till exempel hash-tabeller, köer, staplar, påsar, ordlistor och listor.

Alla samlingar baseras på gränssnitten ICollection eller ICollection<T> , antingen direkt eller indirekt. IList och IDictionary deras allmänna motsvarigheter härleds alla från dessa två gränssnitt.

I samlingar baserade på IList eller direkt på ICollectioninnehåller varje element endast ett värde. Dessa typer är:

I samlingar baserade på IDictionary gränssnittet innehåller varje element både en nyckel och ett värde. Dessa typer är:

Klassen KeyedCollection<TKey,TItem> är unik eftersom den är en lista med värden med nycklar inbäddade i värdena. Därför fungerar den både som en lista och som en ordlista.

När du behöver effektiv åtkomst till flera trådar använder du de allmänna samlingarna i System.Collections.Concurrent namnområdet.

Klasserna Queue och Queue<T> innehåller första-i-först-ut-listor. Klasserna Stack och Stack<T> innehåller listor för sista-in-först-ut.

Stark skrivning

Generiska samlingar är den bästa lösningen på stark skrivning. Om du till exempel lägger till ett element av någon annan typ än en Int32 i en List<Int32> samling uppstår ett kompileringsfel. Men om språket inte stöder generiska System.Collections objekt innehåller namnområdet abstrakta basklasser som du kan utöka för att skapa samlingsklasser som är starkt inskrivna. Dessa basklasser omfattar:

Hur samlingar varierar

Samlingar varierar i hur de lagrar, sorterar och jämför element och hur de utför sökningar.

Klassen SortedList och den SortedList<TKey,TValue> generiska klassen tillhandahåller sorterade versioner av Hashtable klassen och den Dictionary<TKey,TValue> generiska klassen.

Alla samlingar använder nollbaserade index utom Array, vilket tillåter matriser som inte är nollbaserade.

Du kan komma åt elementen i en SortedList eller en KeyedCollection<TKey,TItem> av antingen nyckeln eller elementets index. Du kan bara komma åt elementen i en Hashtable eller en Dictionary<TKey,TValue> av elementets nyckel.

Använda LINQ med samlingstyper

Linq till objekt-funktionen ger ett vanligt mönster för åtkomst till minnesinterna objekt av alla typer som implementerar IEnumerable eller IEnumerable<T>. LINQ-frågor har flera fördelar jämfört med standardkonstruktioner som foreach loopar:

  • De är koncisa och lättare att förstå.
  • De kan filtrera, sortera och gruppera data.
  • De kan förbättra prestandan.

Mer information finns i LINQ to Objects (C#), LINQ to Objects (Visual Basic), and Parallel LINQ (PLINQ).

Title Description
Samlingar och datastrukturer Beskriver de olika samlingstyper som är tillgängliga i .NET, inklusive staplar, köer, listor, matriser och ordlistor.
Samlingstyper för hashtable och ordlista Beskriver funktionerna i generiska och icke-generiska hash-baserade ordlistetyper.
Sorterade samlingstyper Beskriver klasser som tillhandahåller sorteringsfunktioner för listor och uppsättningar.
Generika Beskriver funktionen generics, inklusive de generiska samlingar, ombud och gränssnitt som tillhandahålls av .NET. Innehåller länkar till funktionsdokumentation för C#, Visual Basic och Visual C++, samt till stödtekniker som reflektion.

Referens

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>