Внимательно проанализируем это объявление. Прежде всего обратите внимание на то, что типintуказывается в угловых скобках после имени классаGen.В этом случаеintслужит
В следующей строке кода переменнойiObприсваивается ссылка на экземпляр объекта классаGenдля варианта типаint.
iOb = new Gen
Обратите внимание на то, что при вызове конструктора классаGenуказывается также аргумент типаint.Это необходимо потому, что переменная (в данном случае —iOb),которой присваивается ссылка, относится к типуGen
iOb = new Gen
ПеременнаяiObотносится к типуGen
Затем в программе отображается тип переменнойobв объектеiOb— типSystem. Int32. Это структура .NET, соответствующая типуint.Далее значение переменнойobполучается в следующей строке кода.
int v = iOb.GetOb ;
Возвращаемым для методаGetOb является типТ,который был заменен на типintпри объявлении переменнойiOb,и поэтому методGetOb возвращает значение того же типаint.Следовательно, данное значение может быть присвоено переменнойvтипаint.
Далее в классеGenericsDemoобъявляется объект типаGen
Gen
В этом объявлении указывается аргумент типаstring,поэтому в объекте классаGenвместоТподставляется типstring.В итоге создается вариант классаGenдля типаstring,как демонстрируют остальные строки кода рассматриваемой здесь программы.