Универсальные коллекции в .NET Framework

Обновлен: Ноябрь 2007

В этом разделе содержатся общие сведения об универсальных классах коллекций и других универсальных типов в платформе .NET Framework.

Универсальные коллекции в .NET Framework

Библиотека классов .NET Framework предоставляет ряд универсальных классов коллекций в пространствах имен System.Collections.Generic и System.Collections.ObjectModel. Дополнительные сведения об этих классах содержатся в разделе Часто используемые типы коллекций.

System.Collections.Generic

Большинство из универсальных типов коллекций являются прямыми аналогами неуниверсальных типов. Dictionary<TKey, TValue> представляет собой универсальную версию Hashtable; для перечисления он использует универсальную структуру KeyValuePair<TKey, TValue> вместо DictionaryEntry.

List<T> является универсальной версией ArrayList. Существуют и универсальные классы Queue<T> и Stack<T>, которые соответствуют неуниверсальным версиям.

Существуют универсальные и неуниверсальные версии SortedList<TKey, TValue>. Обе эти версии являются гибридами словаря и списка. Универсальный класс SortedDictionary<TKey, TValue> представляет собой обычный словарь и не имеет неуниверсального эквивалента.

Универсальный класс LinkedList<T> является точным связанным списком. Он не имеет неуниверсального эквивалента.

System. Collections.ObjectModel

Универсальный класс Collection<T> предоставляет базовый класс для создания своих универсальных типов коллекций. Класс ReadOnlyCollection<T> предоставляет простой способ создания коллекции только для чтения из любого типа, который реализует универсальный интерфейс IList<T>. Универсальный класс KeyedCollection<TKey, TItem> предоставляет способ хранения объектов, содержащих свои собственные ключи.

Другие универсальные типы

Универсальная структура Nullable<T> позволяет использовать типы значений так, как будто им могут быть заданы значения null. Это может быть полезно при работе с запросами к базе данных, где поля, содержащие типы значений, могут опускаться. Параметр универсального типа может принимать значения любого типа.

Bb762916.alert_note(ru-ru,VS.90).gifПримечание.

В C# не обязательно явно использовать Nullable<T> , потому что язык имеет синтаксис для типов, допускающих значения null.

Универсальная структура ArraySegment<T> предоставляет способ для выделения диапазона элементов в одномерном массиве любого типа, начинающемся с нуля. Параметр универсального типа является типом элементов массива.

Универсальный делегат EventHandler<TEventArgs> избавляет от необходимости назначения типа делегата для обработки событий, если такое событие соответствует шаблону обработки событий, используемому .NET Framework. Например, предположим, что создан класс MyEventArgs, производный от EventArgs, для хранения данных события. Затем можно объявить событие следующим образом:

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

См. также

Основные понятия

Общие сведения об универсальных шаблонах в .NET Framework

Универсальные делегаты для управления массивами и списками

Универсальные интерфейсы

Преимущества и ограничения универсальных шаблонов

Ссылки

System.Collections.Generic

System.Collections.ObjectModel

Другие ресурсы

Универсальные шаблоны в платформе .NET Framework