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

2023-11-25

我制作了一个自定义 TObjectList 后代,旨在保存基对象类的子类。它看起来像这样:

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

implementation

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

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

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


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

<T: constructor>

或者,根据您的具体情况:

<T: TBaseDatafile, constructor>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泛型:什么是“构造函数约束”? 的相关文章

随机推荐

  • 如何在Python中跳过单个循环迭代? [复制]

    这个问题在这里已经有答案了 我有以下代码 for i in list1 if i 5 skip the NEXT iteration not the end of this one else do something 如何跳过引发跳过的迭代
  • 使用 VBScript 在单个文件夹中查找最新文件日期

    我如何修改此 VBScript 以仅返回最新文件的名称和上次修改日期 目前 它返回过去 24 小时内修改的任何内容 我只想查找最新的文件 我从 StackOverflow 借用了它 但还不是 VBScript 向导 option expli
  • 尝试在 iPad 上显示后置摄像头时应用程序冻结

    我正在开发的应用程序可以在 iPhone 和 iPad 上运行 该应用程序具有的功能之一是从相机捕获图像 我正在使用 UIImagePickerController 来实现此功能 这是我的代码块 self imagePicker sourc
  • 如何将 2 个或更多 C# 程序集合并到 1 个库中?

    我有4个dll 但我想要 1 个 dll 其中包含所有 4 个 dll 的代码 我尝试添加一个项目并将所有现有代码复制粘贴到一个项目中 但我做不到 看看ILMerge ILMerge 是一个用于将多个 NET 程序集合并为一个实用程序 单个
  • Java 多个可变长度参数

    今天之前在处理可变长度参数时我还没有看到过具体的事情 例如 有一个名为准备好的语句的方法 其声明如下 1 String prepareStatement String columnNames String values String col
  • 如何使用 PHP 清理用户输入?

    是否有一个包罗万象的功能 可以很好地清理用户输入的 SQL 注入和 XSS 攻击 同时仍然允许某些类型的 HTML 标签 Answer recommended by PHP Collective 认为用户输入可以被过滤是一个常见的误解 PH
  • WCF 服务授权模式

    我正在实施安全的 WCF 服务 身份验证是使用用户名 密码或 Windows 凭据完成的 该服务托管在 Windows 服务进程中 现在 我正在尝试找出最好的实施方法授权对于每个服务操作 例如 考虑以下方法 public EntityInf
  • 将一些字符串插入到给定索引处的给定字符串中[重复]

    这个问题在这里已经有答案了 如何在现有字符串中插入一些文本 例如 假设我有一个字符串 Name Age Group Class Profession 如何在第四个单词之前再插入第三个单词三次 以获得 Name Age Group Group
  • gcc 的 -fforce-mem 选项

    gcc v 4 5 3 是否仍然支持 fforce mem 选项 我正在尝试构建使用此选项的 libmad MP3 解码器 谷歌搜索显示对此选项的引用 但是在线海湾合作委员会文档不要显示它 From GCC 4 3 发行说明 fforce
  • 如何实现 Google Play 图书中使用的卷页类型?

    我一直在寻找一种合适的方法来模拟 iOS 应用程序中但在 Android 应用程序中使用的页面翻转 卷曲类型 我在 Android 上见过的最接近的应用是 Google Play 图书应用 他们是否使用了我没见过的 SDK 的某些部分 我是
  • 在 Redux 中使用 getState 是一种反模式吗?

    我第一次在 jQuery 应用程序中使用 Redux 并且创建了小型可观察的实现 可观察对象响应状态对象的多个属性的更改 当状态本身更改时对 DOM 进行更改 如果我的可观察回调需要 2 个属性值来完成其任务 我将观察这两个值 然后使用这些
  • 我可以使用 Watir 在没有监视器的情况下从 Linux 服务器上的网站上抓取数据吗?

    我可以使用 Watir 从网站 使用 AJAX 抓取数据 但在没有监视器的 Linux 服务器上吗 linode com 做这件事有很多种方法 Use HtmlUnit 任何一个Celerity or watir 网络驱动程序 通过远程 S
  • 对 tf.split() 的 num_splits 使用变量

    是否可以使用 tf split 的 num split 参数的占位符输入 我理想地想做这样的事情 num splits tf placeholder tf int32 inputs tf placeholder tf int32 5 Non
  • Azure 存储模拟器将数据存储在特定路径上

    在我当前的电脑设置中 我安装了 SSD 和普通硬盘 SSD 的容量只有 120GB 由于我正在开发一个大型应用程序 该应用程序将大量文件存储在 azure blob 存储中 因此我希望指定 microsoft azure 存储模拟器必须将我
  • Linux下的php串口通信

    我已经在 fedora 13 中安装了 xampp 我正在尝试使用 php 串行类通过串行端口与微控制器进行通信 我的代码是 example php include php serial class php serial new phpSe
  • 当 mypy 无法注释时,为什么它会抱怨列表理解?

    为什么 Mypy 抱怨它需要列表理解变量的类型注释 而无法使用 MyPy 注释这样的变量 具体来说 如何解决以下错误 from enum import EnumMeta def spam y EnumMeta return x value
  • Android 中的展开和折叠工具栏

    我正在借助折叠工具栏实现展开和折叠工具栏 但是当我的工具栏折叠时我陷入困境 我想显示不同的工具栏 我看过这样一段代码 但无法找到我的解决方案 我还看到了一位出色的开发人员的解决方案https github com saulmm Coordi
  • Response.Redirect() 与 Response.RedirectPermanent()

    我是 ASP Net 4 0 的新手 并且看到了一个名为Response RedirectPermanent 我查了一些文章 但我无法清楚地理解它们的实际含义和区别Response RedirectPermanent over Respon
  • CSS样式优先

    我在 CSS 声明优先级方面遇到问题 我的页面包含一个带有规则的外部 CSS 文件和一些内联 CSS 声明 这些声明应该覆盖该规则 据我了解 内联样式声明应该覆盖外部 CSS 声明 但是 当我在 Chrome 中查看页面时 表格的第二行显示
  • 泛型:什么是“构造函数约束”?

    我制作了一个自定义 TObjectList 后代 旨在保存基对象类的子类 它看起来像这样 interface TMyDataList