Приведение ребенка к родителю с помощью дженериков - PullRequest
0 голосов
/ 19 октября 2011
Class a <T> {
   public T j;
}

class b:a <int> {

}

Если бы это не было универсальным, вы могли бы сделать следующее:

a foo = new b();

Есть ли способ сделать то же самое с общим случаем?

Есть ли лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 19 октября 2011

Вы можете использовать:

a<int> foo = new b();
1 голос
/ 19 октября 2011

Вам нужны общие параметры, объявленные в a:

class a<T>
{
    public T j;
}

Они также нужны в b, чтобы иметь возможность получить из a:

class b<T> : a<T> { }

и затем вы можете разыграть b<T> на a<T>:

a<int> foo = new b<int>();

Или вы можете получить от конкретного a:

class b : a<int> { }

и затем разыграть:

a<int> foo = new b();
0 голосов
/ 19 октября 2011
public static void Main()
{
    Base<int> foo = new Derived();
}

class Base<T>
{
    public T data;
}

class Derived:Base<int>
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...