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

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

Универсальные шаблоны позволяют точно настроить метод, класс, структуру или интерфейс под тип обрабатываемых данных. Например, вместо использования класса Hashtable, который позволяет ключам и значениям быть любого типа, можно использовать универсальный класс Dictionary<TKey, TValue> и указать допустимый тип ключа и тип значения. Помимо прочего, преимуществами универсальных шаблонов являются улучшенная возможность многократного использования кода и сохранения типов.

Платформа .NET Framework предоставляет классы универсальных коллекций в пространствах имен System.Collections.Generic и System.Collections.ObjectModel. Универсальные интерфейсы для реализации сортировки и сравнений на равенство предоставляются пространством имен System вместе с универсальными типами делегатов для обработчиков событий, преобразований и предикатов поиска.

Поддержка универсальных шаблонов добавлена в System.Reflection для проверки универсальных типов и универсальных методов, в System.Reflection.Emit для создания динамических сборок, содержащих универсальные типы и методы, и в System.CodeDom для создания графиков исходного кода, содержащего универсальные шаблоны.

Visual Basic, C# и Visual C++ предоставляет полную поддержку определения и использования универсальных типов. Среда CLR предоставляет новые коды операций и префиксы для поддержки универсальных типов в языке MSIL.

В этом подразделе

Ссылка

  • System.Collections.Generic
    Содержит каталог большинства универсальных типов коллекций, предоставляемых платформой .NET Framework, таких как универсальные классы List<T> и Dictionary<TKey, TValue>.

  • System.Collections.ObjectModel
    Содержит каталог дополнительных универсальных типов коллекций, таких как универсальный класс ReadOnlyCollection<T>, которые используются для предоставления объектных моделей пользователям класса.

  • OpCodes
    Для поддержки универсальных шаблонов были добавлены новые коды операций и префиксы, включая Stelem, Ldelem, Unbox_Any, Constrained и Readonly.

Связанные подразделы