Поделиться через


Универсальные шаблоны (Руководство по программированию на C#)

Универсальные шаблоны были добавлены в язык C# версии 2.0 и среду CLR. Универсальные шаблоны в платформе .NET Framework представляют концепцию параметров типов, которые позволяют разрабатывать классы и методы, не придерживающиеся спецификации одного или нескольких типов до тех пор, пока класс или метод не будет объявлен клиентским кодом и пока не будет создан его экземпляр. Например, используя параметр универсального типа T можно написать отдельный класс, который другой клиентский код сможет использовать без риска привидения во время выполнения или операций упаковки-преобразования, как показано в следующем примере:

// Declare the generic class.
public class GenericList<T>
{
    void Add(T input) { }
}
class TestGenericList
{
    private class ExampleClass { }
    static void Main()
    {
        // Declare a list of type int.
        GenericList<int> list1 = new GenericList<int>();

        // Declare a list of type string.
        GenericList<string> list2 = new GenericList<string>();

        // Declare a list of type ExampleClass.
        GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
    }
}

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

  • Используйте универсальные типы для достижения максимального уровня повторного использования кода, безопасности типа и производительности.

  • Наиболее частым случаем использования универсальных шаблонов является создание классов коллекции.

  • Библиотека классов платформы .NET Framework содержит несколько новых универсальных классов коллекций в пространстве имен System.Collections.Generic. Их следует использовать по мере возможности вместо таких классов как ArrayList в пространстве имен System.Collections.

  • Можно создавать собственные универсальные интерфейсы, классы, методы, события и делегаты.

  • Доступ универсальных классов к методам можно ограничить определенными типами данных.

  • Сведения о типах, используемых в универсальном типе данных, можно получить во время выполнения путем отражения.

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

Дополнительные сведения:

Спецификация языка C#

Дополнительные сведения см. в разделе Спецификация языка C#.

См. также

Ссылки

System.Collections.Generic

Типы (Руководство по программированию на C#)

<typeparam> (Руководство по программированию на C#)

<typeparamref> (Руководство по программированию на C#)

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

Руководство по программированию на C#