当前位置:  开发笔记 > 编程语言 > 正文

泛型:什么是"构造函数约束"?

如何解决《泛型:什么是"构造函数约束"?》经验,为你挑选了1个好方法。

我创建了一个自定义TObjectList后代,用于保存基础对象类的子类.它看起来像这样:

interface
   TMyDataList = class(TObjectList)
   public
      constructor Create;
      procedure upload(db: TDataSet);
   end;

implementation

constructor TMyDataList.Create;
begin
   inherited Create(true);
   self.Add(T.Create);
end;

我希望每个新列表都以一个空白对象开头.这很简单,对吧?但编译器不喜欢它.它说:

"无法在类型参数声明中创建没有CONSTRUCTOR约束的新实例"我只能假设这是与泛型相关的东西.任何人都知道发生了什么以及如何使这个构造函数工作?



1> Konrad Rudol..:

您正在尝试创建Tvia 的实例T.Create.这不起作用,因为编译器不知道您的泛型类型具有无参数构造函数(请记住:这不是必需的).要纠正这个问题,你必须创建一个构造函数约束,如下所示:


或者,在您的具体情况下:



呸.在这种情况下,编译器*确实知道TBaseDataFile有一个不带参数的虚构造函数.
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有