Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 类标题中的关键字“constructor”是什么意思?_Delphi_Generics - Fatal编程技术网

Delphi 类标题中的关键字“constructor”是什么意思?

Delphi 类标题中的关键字“constructor”是什么意思?,delphi,generics,Delphi,Generics,如果我有这样一个类声明: MyCollection<T: TBaseCopyable, constructor> = class MyCollection=class 关键字constructor的作用是什么 不是每个类都已经有了构造函数吗,它在那里做什么呢?它是一个构造函数 约束可以与泛型的类型参数相关联。约束声明在泛型类型的构造中传递给该参数的任何特定类型必须支持的项 此特定约束是: 类型参数可以由保留字“构造函数”的零个或一个实例约束。这意味着实际参数类型必须是定义默认构造

如果我有这样一个类声明:

MyCollection<T: TBaseCopyable, constructor> = class
MyCollection=class
关键字
constructor
的作用是什么

不是每个类都已经有了构造函数吗,它在那里做什么呢?

它是一个构造函数

约束可以与泛型的类型参数相关联。约束声明在泛型类型的构造中传递给该参数的任何特定类型必须支持的项

此特定约束是:

类型参数可以由保留字“构造函数”的零个或一个实例约束。这意味着实际参数类型必须是定义默认构造函数(公共无参数构造函数)的类,以便泛型类型中的方法可以使用参数类型的默认构造函数构造参数类型的实例,而不知道参数类型本身(无最低基本类型要求)

在约束声明中,可以按任意顺序将“构造函数”与接口或类类型约束混合使用


在我看来,这基本上是一个无用的功能。每当我编写一个希望实例化成员的通用容器类时,我发现我需要能够将参数传递给构造函数。我完全不知道为什么这个功能以这种残缺的形式存在

有一种众所周知的技术允许泛型容器实例化成员,这里讨论:

在有人用自己的话回答之前。