Delphi中使用泛型的简单类型

时间:2010-01-12 10:52:43

标签: delphi generics types

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

TField<T: xxx> = class  
private
    FValue: T;  
public  
    property Value: T read FValue write FValue;  
end;

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

还是有另一种方法可以做到这一点?

由于

4 个答案:

答案 0 :(得分:7)

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

TField<T: record> = class   
private 
    FValue: T;   
public   
    property Value: T read FValue write FValue;   
end;

答案 1 :(得分:1)

我不确定我的问题是否正确,但如果你想要一个可以容纳不同原始数据类型的变量,你可能会看一下Variant数据类型。

你不需要泛型; - )

答案 2 :(得分:1)

根据Craig Stuntz' blog

  

Delphi / Win32型系统不是   rooted(内置简单类型,   记录和类没有   共同的祖先)和原始类型   不能/不实现接口

所以很可能你不能将泛型类限制为原始类型(而不是允许“where T:struct”的C#)

答案 3 :(得分:0)

如果您想限制可用于通用的类型,您只需在创建中检查有效类型吗?