Dela via


Generiska samlingar i .NET

.NET-klassbiblioteket innehåller ett antal generiska samlingsklasser i System.Collections.Generic namnrymderna och System.Collections.ObjectModel . Mer detaljerad information om dessa klasser finns i Vanliga samlingstyper.

System.Collections.Generic

Många av de generiska samlingstyperna är direkta analoger av icke-generiska typer. Dictionary<TKey,TValue> är en allmän version av Hashtable. Den använder den allmänna strukturen KeyValuePair<TKey,TValue> för uppräkning i stället DictionaryEntryför .

List<T> är en allmän version av ArrayList. Det finns generiska Queue<T> klasser och Stack<T> klasser som motsvarar de icke-generiska versionerna.

Det finns generiska och icke-generiska versioner av SortedList<TKey,TValue>. Båda versionerna är hybrider av en ordlista och en lista. Den SortedDictionary<TKey,TValue> generiska klassen är en ren ordlista och har ingen icke-generisk motsvarighet.

Den LinkedList<T> generiska klassen är en sann länkad lista. Den har ingen icke-generisk motsvarighet.

System.Collections.ObjectModel

Den Collection<T> generiska klassen tillhandahåller en basklass för att härleda dina egna generiska samlingstyper. Klassen ReadOnlyCollection<T> är ett enkelt sätt att skapa en skrivskyddad samling från alla typer som implementerar det IList<T> allmänna gränssnittet. Den KeyedCollection<TKey,TItem> generiska klassen ger ett sätt att lagra objekt som innehåller sina egna nycklar.

Andra generiska typer

Med den Nullable<T> allmänna strukturen kan du använda värdetyper som om de kunde tilldelas null. Detta kan vara användbart när du arbetar med databasfrågor, där fält som innehåller värdetyper kan saknas. Den generiska typparametern kan vara vilken värdetyp som helst.

Kommentar

I C# och Visual Basic är det inte nödvändigt att använda Nullable<T> explicit eftersom språket har syntax för null-typer. Se Nullable value types (C#-referens) och Nullable value types (Visual Basic).

Den ArraySegment<T> allmänna strukturen är ett sätt att avgränsa ett antal element inom en endimensionell, nollbaserad matris av vilken typ som helst. Den generiska typparametern är typen av matriselement.

Det EventHandler<TEventArgs> allmänna ombudet eliminerar behovet av att deklarera en ombudstyp för att hantera händelser, om händelsen följer det händelsehanteringsmönster som används av .NET. Anta till exempel att du har skapat en MyEventArgs klass, härledd från EventArgs, för att lagra data för din händelse. Du kan sedan deklarera händelsen på följande sätt:

public:
    event EventHandler<MyEventArgs^>^ MyEvent;
public event EventHandler<MyEventArgs> MyEvent;
Public Event MyEvent As EventHandler(Of MyEventArgs)

Se även