Страницы

Поиск по вопросам

четверг, 13 декабря 2018 г.

Обобщенные типы в С#

public class Example { public static void Main() { Myclass ob = new Myclass(); }
class Myclass where T: new() { public T instanse = new T(); } class Testclass { } }
Вопрос: Myclass - это тип. Testclass - тоже тип. Какого же тогда типа экземпляр ob?


Ответ

MyClass — это как бы не совсем тип. Это обобощённый тип (на английском — generic).
Вы можете сконструировать экземпляр обобщённого типа только указав типы-аргументы, которые заменят формальный параметр-тип T. Экземпляр обобщённого типа самого по себе сконструировать невозможно.
Для каждого обобщённого типа существует (обычно бесконечно много) конкретизаций: конкретных типов, которые соответствуют определённым значениям типов-параметров.
Соответственно, тип ob и есть такая конкретизация: Myclass с параметром T = Testclass. Такая конкретизация в языке C# записывается как Myclass

Комментариев нет:

Отправить комментарий