Kolekcje ogólne na platformie .NET
Biblioteka klas platformy .NET udostępnia wiele ogólnych klas kolekcji w System.Collections.Generic przestrzeniach nazw i System.Collections.ObjectModel . Aby uzyskać bardziej szczegółowe informacje o tych klasach, zobacz Często używane typy kolekcji.
System.Collections.Generic
Wiele typów kolekcji ogólnych jest bezpośrednimi analogiami typów niegenerycznych. Dictionary<TKey,TValue> jest ogólną wersją programu Hashtable; używa struktury KeyValuePair<TKey,TValue> ogólnej dla wyliczenia zamiast DictionaryEntry.
List<T> jest ogólną wersją programu ArrayList. Istnieją klasy ogólne Queue<T> i Stack<T> , które odpowiadają niegenerycznych wersji.
Istnieją ogólne i niegeneryczne wersje programu SortedList<TKey,TValue>. Obie wersje są hybrydami słownika i listy. Klasa SortedDictionary<TKey,TValue> ogólna jest czystym słownikiem i nie ma niegenericznego odpowiednika.
Klasa LinkedList<T> ogólna jest prawdziwą połączoną listą. Nie ma on niegenericznego odpowiednika.
System.Collections.ObjectModel
Klasa Collection<T> ogólna udostępnia klasę bazową do wyprowadzania własnych typów kolekcji ogólnych. Klasa ReadOnlyCollection<T> zapewnia łatwy sposób tworzenia kolekcji tylko do odczytu z dowolnego typu, który implementuje IList<T> interfejs ogólny. Klasa KeyedCollection<TKey,TItem> ogólna umożliwia przechowywanie obiektów zawierających własne klucze.
Inne typy ogólne
Struktura Nullable<T> ogólna umożliwia używanie typów wartości tak, jakby mogły być przypisane null
. Może to być przydatne podczas pracy z zapytaniami bazy danych, gdzie brakuje pól zawierających typy wartości. Parametr typu ogólnego może być dowolnym typem wartości.
Uwaga
W językach C# i Visual Basic nie jest konieczne jawne użycie Nullable<T> , ponieważ język ma składnię dla typów dopuszczanych do wartości null. Zobacz Typy wartości dopuszczanych do wartości null (odwołanie w C#) i Typy wartości dopuszczalnych wartości null (Visual Basic).
Struktura ArraySegment<T> ogólna umożliwia rozdzielenie zakresu elementów w jednowymiarowej, zerowej tablicy dowolnego typu. Parametr typu ogólnego jest typem elementów tablicy.
Delegat EventHandler<TEventArgs> ogólny eliminuje konieczność deklarowania typu delegata do obsługi zdarzeń, jeśli zdarzenie jest zgodne ze wzorcem obsługi zdarzeń używanym przez platformę .NET. Załóżmy na przykład, że utworzono klasę pochodzącą MyEventArgs
z EventArgsklasy , aby przechowywać dane dla zdarzenia. Następnie można zadeklarować zdarzenie w następujący sposób:
public:
event EventHandler<MyEventArgs^>^ MyEvent;
public event EventHandler<MyEventArgs> MyEvent;
Public Event MyEvent As EventHandler(Of MyEventArgs)