Delphi中使用泛型的简单类型

6 delphi generics types

如何创建仅包含基本类型的泛型类?

TField<T: xxx> = class  
private
    FValue: T;  
public  
    property Value: T read FValue write FValue;  
end;
Run Code Online (Sandbox Code Playgroud)

我不需要接口,类等,我只需要布尔,整数,浮点数等等......

或者有另一种方法可以做到这一点?

谢谢

小智 7

您可以使用"record"关键字来约束值类型(不是引用类型):

TField<T: record> = class   
private 
    FValue: T;   
public   
    property Value: T read FValue write FValue;   
end;
Run Code Online (Sandbox Code Playgroud)

  • 它有趣,你不能做的事情如下: - <T:boolean> //即使是愚蠢的...... - <T:TObject> //你可以把任何继承自TObject的类,但不能TObject本身如果我想要的话怎么样?为无参数构造函数对象创建通用对象池?TObjectPool <T:TObject,构造函数>我得到"E2510 Type'TObject'不是一个有效的约束" (2认同)
  • 找到它,使用"class"而不是tobject (2认同)

Bir*_*ger 0

如果您想限制可用于泛型的类型,您不能只检查创建中的有效类型吗?