ВУЗ:
Составители:
Рубрика:
121
double [] a = { 1, 2, 3, 4, 5, 0 };
Set<int> s1 = new Set<double>(a); // Ошибка
Аналогично, ошибки могут возникнуть и при обращении к методам
объектов класса Set, в которых обобщенный тип используется при задании
параметров методов или их типов возвращаемых значений. Так, например, в
следующем фрагменте возникнет ошибка, поскольку результат функции
присваивается переменной типа double.
int [] a = { 1, 2, 3, 4, 5, 0 };
Set<int> s1 = new Set<int>(a);
double d = s1[3]; // Ошибка
Тип, образуемый вследствие подстановки аргументов типа вместо
обобщенного, называется сконструированным типом. В качестве
параметра типа может быть подставлен как конкретный тип (например int,
string или MySomeStruct), так и тип, сам по себе являющийся
обобщенным параметром (или сконструированный с их использованием). В
первом случае получаемый тип является так называемым закрытым типом,
а во втором - открытым. Иногда закрытый тип называют специализацией,
так как при этом порождается специализированная версия обобщенного типа.
В приведенном выше примере Set<int> является сконструированным
закрытым типом. Процесс создания сконструированного типа из
обобщенного типа называется generic type instantiation.
Сконструированный тип создается, когда компилятор в первый раз
встречает его упоминание. Например, это происходит при выполнении
следующих строк кода:
Set<int> s1 = new Set<int>(a);
Set<double> s2 = new Set<double>(a2);
7.2. Уточнения, используемые в обобщениях
При определении обобщенного класса предполагается, что
обобщенный тип может быть любым, т.е. компилятор «не знает», какие
конкретные типы будут использоваться в качестве параметров обобщения.
Поэтому параметры типа «по умолчанию» рассматриваются как object.
double [] a = { 1, 2, 3, 4, 5, 0 };
Set s1 = new Set(a); // Ошибка
Аналогично, ошибки могут возникнуть и при обращении к методам
объектов класса Set, в которых обобщенный тип используется при задании
параметров методов или их типов возвращаемых значений. Так, например, в
следующем фрагменте возникнет ошибка, поскольку результат функции
присваивается переменной типа double.
int [] a = { 1, 2, 3, 4, 5, 0 };
Set s1 = new Set(a);
double d = s1[3]; // Ошибка
Тип, образуемый вследствие подстановки аргументов типа вместо
обобщенного, называется сконструированным типом. В качестве
параметра типа может быть подставлен как конкретный тип (например int,
string или MySomeStruct), так и тип, сам по себе являющийся
обобщенным параметром (или сконструированный с их использованием). В
первом случае получаемый тип является так называемым закрытым типом,
а во втором - открытым. Иногда закрытый тип называют специализацией,
так как при этом порождается специализированная версия обобщенного типа.
В приведенном выше примере Set является сконструированным
закрытым типом. Процесс создания сконструированного типа из
обобщенного типа называется generic type instantiation.
Сконструированный тип создается, когда компилятор в первый раз
встречает его упоминание. Например, это происходит при выполнении
следующих строк кода:
Set s1 = new Set(a);
Set s2 = new Set(a2);
7.2. Уточнения, используемые в обобщениях
При определении обобщенного класса предполагается, что
обобщенный тип может быть любым, т.е. компилятор «не знает», какие
конкретные типы будут использоваться в качестве параметров обобщения.
Поэтому параметры типа «по умолчанию» рассматриваются как object.
121
Страницы
- « первая
- ‹ предыдущая
- …
- 119
- 120
- 121
- 122
- 123
- …
- следующая ›
- последняя »
