<р> 'Б.
<р> Класс Obj
<р> Общественный V1 как объект
<р> Общественный V2 как объект
<р> Public Sub New (ByVal _V1 как предмет, ByVal _V2 как предмет) V1 = _V1
<р> V2 = _V2
<р> End Sub
<р> End Class
<р> Класс поколения (Of T, U) Общественной V1 как Т общественной V2, как у
<р> Public Sub New (ByVal _V1 Как T, ByVal _V2 Как U) = V1 _V1
<р> V2 = _V2
<р> End Sub
В конец класса
//C #
<р > класс Obj
<р> {
<р> общественный Object т;
<р> Объект общественного и;
<р> общественного Obj (Object _t, объект _U)
<р > {
<р> т = _t;
<р> и = _U;
<р>}
<р>}
<р> класс Gen
<р> {
<р> общественный T T;
<р> общественного U U;
<р> общественного поколения (Т _t, U _U)
<р> {
<р> т = _t;
<р> и = _U;
<р>}
<р>}
<р> Как вы можете видеть, класс Obj имеет двух членов типа Object.
Класс Быт имеет двух членов поле типа T и U. Потребляющее код определяет типы для Т и U. В зависимости от того, как потребитель использует код класса Gen, Т и U может быть строка, INT, пользовательские класс, . или любой их комбинации
<р> Существует значительное ограничение на создание универсального класса (без ограничений, а обсуждаются в разделе "Как использовать ограничений» далее в этой главе): общий код действителен только если он компилирует навсегда у возможного построенного экземпляра общий, будь то Int, строки или любого другого класса.
По сути, вы ограничены capabili- связей класса Object базовой при написании общего кода. Таким образом, вы могли бы назвать ToString или метод GetHashCode внутри вашего класса, но вы не могли бы использовать + функций оператора или оператора>. Эти же ограничения не применяются к потребляющей кода, потому что отнимает код объявляет определенный тип для общих.
<Р> Как к потреблению универсального типа
<р> Когда вы потребляете универсальный тип, необходимо указать типы для любых дженериков используется.
Рассмотрим следующий код консольного приложения, которое использует классы Gen и OBJ:
<р> 'Б.
<р> "Добавить две строки с помощью класса Obj
<р> Дим О. Как Obj = новый Obj ("Привет,", "Мир!") Console.WriteLine (CTy