Często używane typy kolekcji
Typy kolekcji reprezentują różne sposoby zbierania danych, takich jak tabele skrótów, kolejki, stosy, torby, słowniki i listy.
Wszystkie kolekcje są oparte na ICollection interfejsach lub ICollection<T> bezpośrednio lub pośrednio. IList i IDictionary ich ogólne odpowiedniki pochodzą z tych dwóch interfejsów.
W kolekcjach opartych na IList elementach lub bezpośrednio na ICollectionelementach każdy element zawiera tylko wartość. Te typy obejmują:
W kolekcjach opartych na interfejsie IDictionary każdy element zawiera zarówno klucz, jak i wartość. Te typy obejmują:
- Hashtable
- SortedList
- SortedList<TKey,TValue>
- Dictionary<TKey,TValue>
- ConcurrentDictionary<TKey,TValue>
Klasa jest unikatowa KeyedCollection<TKey,TItem> , ponieważ jest to lista wartości z kluczami osadzonymi w wartościach. W rezultacie zachowuje się zarówno jak lista, jak i słownik.
Jeśli potrzebujesz wydajnego dostępu do kolekcji wielowątków, użyj kolekcji ogólnych w System.Collections.Concurrent przestrzeni nazw.
Klasy Queue i Queue<T> udostępniają listy pierwszy na pierwszym miejscu. Klasy Stack i Stack<T> udostępniają listy last-in-first-out.
Silne wpisywanie
Kolekcje ogólne to najlepsze rozwiązanie do silnego wpisywania. Na przykład dodanie elementu dowolnego typu innego niż do Int32List<Int32>
kolekcji powoduje błąd czasu kompilacji. Jeśli jednak język nie obsługuje typów ogólnych, System.Collections przestrzeń nazw zawiera abstrakcyjne klasy bazowe, które można rozszerzyć, aby tworzyć klasy kolekcji, które są silnie typizowane. Te klasy podstawowe obejmują:
Jak kolekcje się różnią
Kolekcje różnią się w zależności od sposobu przechowywania, sortowania i porównywania elementów oraz ich wykonywania.
Klasa SortedList i SortedList<TKey,TValue> klasa ogólna zapewniają posortowane wersje Hashtable klasy i Dictionary<TKey,TValue> klasy ogólnej.
Wszystkie kolekcje używają indeksów opartych na zerach z wyjątkiem Array, co umożliwia tablice, które nie są oparte na zerach.
Dostęp do elementów elementu SortedList lub KeyedCollection<TKey,TItem> elementu można uzyskać za pomocą klucza lub indeksu elementu. Dostęp do elementów elementu Hashtable lub Dictionary<TKey,TValue> można uzyskać tylko za pomocą klucza elementu.
Używanie LINQ z typami kolekcji
Funkcja LINQ to Objects udostępnia typowy wzorzec uzyskiwania dostępu do obiektów w pamięci dowolnego typu, który implementuje IEnumerable lub IEnumerable<T>. Zapytania LINQ mają kilka zalet w przypadku standardowych konstrukcji, takich jak foreach
pętle:
- Są zwięzłe i łatwiejsze do zrozumienia.
- Mogą filtrować, porządkować i grupować dane.
- Mogą one poprawić wydajność.
Aby uzyskać więcej informacji, zobacz LINQ to Objects (C#), LINQ to Objects (Visual Basic) i Parallel LINQ (PLINQ).
Powiązane tematy
Nazwa | opis |
---|---|
Kolekcje i struktury danych | Omówienie różnych typów kolekcji dostępnych na platformie .NET, w tym stosów, kolejek, list, tablic i słowników. |
Typy kolekcji: słownikowy i tabela skrótów | Opisuje funkcje ogólnych i niegenerycznych typów słowników opartych na skrótach. |
Sortowane typy kolekcji | Opisuje klasy, które zapewniają funkcje sortowania list i zestawów. |
Typy ogólne | Opisuje funkcję typów ogólnych, w tym kolekcje ogólne, delegaty i interfejsy udostępniane przez platformę .NET. Zawiera linki do dokumentacji funkcji dla języków C#, Visual Basic i Visual C++oraz do pomocniczych technologii, takich jak odbicie. |
Odwołanie
System.Collections.ICollection
System.Collections.Generic.ICollection<T>
System.Collections.Generic.IList<T>