Здравствуйте, ie, Вы писали:
ie>Допустим было бы возможным, и как бы задание типа при спецификации конструктора отличалось бы от задания типа при спецификации класса?
Что значит как бы отличалось ? В смысле для чего мне надо это ?
Здравствуйте, chudo19, Вы писали:
ie>>Допустим было бы возможным, и как бы задание типа при спецификации конструктора отличалось бы от задания типа при спецификации класса? C>Что значит как бы отличалось ?
Ну например,
class A[T] where T : IMyInterface
public this[Host](h:Host) where Host:UserControl {...}
как создать объект такого класса?
def a : A[int][MyUserControl] //????
C>В смысле для чего мне надо это ?
Это тоже интересно. Почему параметризуется именно конструктор, а не класс?
ie>class A[T] where T : IMyInterface
ie> public this[Host](h:Host) where Host:UserControl {...}
ie>
ну а что тут такого , конструктор как любая другая функция может хотеть некий контракт который надо проверить статически
допустим where Host:UserControl,IMyBlabla ...
ie>как создать объект такого класса? ie>
ie>def a : A[int][MyUserControl] //????
ie>
никак есесено , но это и не нужно, потому как Host не является мембером класса и не сохраняется ,
ie> Почему параметризуется именно конструктор, а не класс?
собсно ответил. патерн стратегия эдыкий
Здравствуйте, chudo19, Вы писали:
ie>>Ну например, ie>>
ie>>class A[T] where T : IMyInterface
ie>> public this[Host](h:Host) where Host:UserControl {...}
ie>>
C>ну а что тут такого , конструктор как любая другая функция может хотеть некий контракт который надо проверить статически C>допустим where Host:UserControl,IMyBlabla ...
Ну все же конструктор не любая функция Думаю Немерловцы тут скопировали C#.
ie>>как создать объект такого класса? ie>>
ie>>def a : A[int][MyUserControl] //????
ie>>
C>никак есесено , но это и не нужно, потому как Host не является мембером класса и не сохраняется ,
Хммм... А зачем класс, который нельзя создать? Бог с ним с мембером класса, я имел ввиду хотя бы синтаксис.
Здравствуйте, ie, Вы писали:
ie>Хммм... А зачем класс, который нельзя создать? Бог с ним с мембером класса, я имел ввиду хотя бы синтаксис.
Может он хочет что-то такое?
interface IShooting
{
Shot(o : object) : void
}
struct Shotgun : IShooting
{ ... }
FeloDeSe[S]() : where S : IShooting
{
static sh : S = sh();
Suicide() : void
{
sh.Shot(this);
}
}
Просто стратегия, причем можно, вроде как, надеяться, что метод будет заинлайнен.
Но я совсем не уверен, что метод будет заинлайнен в случае параметризованного метода.
... << RSDN@Home 1.2.0 alpha rev. 655>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, Klapaucius, Вы писали:
K>Здравствуйте, ie, Вы писали:
ie>>Хммм... А зачем класс, который нельзя создать? Бог с ним с мембером класса, я имел ввиду хотя бы синтаксис.
K>Может он хочет что-то такое?
Все что я хотел это параметризировать алгоритм конструктора и статически проверить это.
что тут особенного ?
C>public this[Host](h:Host) where Host:UserControl {...} неработает. C>есть идеи ?
Это и в C# невозможно. Конструктор — это не совсем обычная фукнция. Он фактически превращается в инструкцию мсил-а. Так что если тебе нужно иметь еще один параметр типа при создании объекта, то сделай фабричный метод с параметром типа.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.