Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / Конспект лекций (C#).pdf
Скачиваний:
864
Добавлен:
27.05.2015
Размер:
2.03 Mб
Скачать

7 Универсальные типы1

Как известно, многие алгоритмы очень похожи по своей логике независимо от типа данных, к которым они применяются. Например, механизм, поддерживающий очередь, остаётся одинаковым независимо от того, предназначена ли очередь для хранения элементов типа int, string, object или для класса, определяемого пользователем. До появления универсальных типов для обработки данных разных типов приходилось создавать различные варианты одного и того же алгоритма. А благодаря универсальным типам можно сначала выработать единое решение независимо от конкретного типа данных, а затем применить его к обработке данных самых разных типов без каких-либо дополнительных усилий.

При описании универсального типа указывается параметр типа (или параметры, если их несколько), который далее используется во всех членах данного типа (чаще всего называется T). Фактически, параметр типа является местозаполнителем для фактического типа, указываемого при создании экземпляра типа.

7.1 Общая схема

Общая форма описания универсального типа имеет вид2:

class <имя класса><<список параметров типа>>

{

<члены класса>

}

а форма объявления переменной такого типа и создания объекта:

<имя класса><<список аргументов типа>> <идентификатор переменной>= new <имя класса><<список аргументов типа>>

([<список параметров конструктора>]);

Пример: создать универсальный класс, имеющий одно поле и методы для доступа к нему.

class MyClass<T>

{

T Value;

public T Get() { return Value; }

public void Set(T NewValue) { Value = NewValue; }

}

MyClass<int> ic = new MyClass<int>(); ic.Set(5);

int i = ic.Get(); // i = 5 MyClass<string> sc = new MyClass<string>();

1Также такие типы называют обобщениями, параметризованными типами

2Универсальными могут быть не только классы, но и другие элементы языка, например, интерфейсы

101