Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизЗадачка про generics C# Найти похожие ветки
← →
oxffff © (2010-04-22 12:05) [0]Допустим, есть следующий код VS2005(C# 2.0)
class A
{ }
class B : A
{ }
static void Bound<W,T>() where W:B,T
where T:A
{
T varB;
varB = new B();
varB = (T) new B();
}
static void Main(string[] args)
{
Bound<C,B>();
}
Может ли кто-нибудь привести пример, что выделенные присваивания некорректны на что жалуется компилятор?
← →
oxffff © (2010-04-22 12:16) [1]Ладно задачка Видимо простая. Но это правильно.
← →
jack128_ (2010-04-22 13:26) [2]
> ли кто-нибудь привести пример, что выделенные присваивания
> некорректны на что жалуется компилятор
class C : B {}
Bound<C, C> ? (C)(new B()) - не коректно.
← →
oxffff © (2010-04-22 14:18) [3]
> jack128_ (22.04.10 13:26) [2]
>
> > ли кто-нибудь привести пример, что выделенные присваивания
>
> > некорректны на что жалуется компилятор
>
>
> class C : B {}
>
> Bound<C, C> ? (C)(new B()) - не коректно.
Именно так. Собственно нельзя ограничь bound параметр сверху.
← →
oxffff © (2010-04-22 14:20) [4]
> Именно так. Собственно нельзя ограничь bound параметр сверху.
В смысле конкретным типом.
← →
RC (2010-04-22 14:26) [5]Не заявлено требование на обязательное наличие конструктора без параметров. У подственного класса конструктор может быть приватный, например, или интернал.
static void Bound<W, T>()
where W : B, T
where T : A, new()
← →
oxffff © (2010-04-23 11:53) [6]
> RC (22.04.10 14:26) [5]
> Не заявлено требование на обязательное наличие конструктора
> без параметров. У подственного класса конструктор может
> быть приватный, например, или интернал.
>
> static void Bound<W, T>()
> where W : B, T
> where T : A, new()
Здесь new B(), а не new T().
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.06 c