2009-04-29 160 views
2

的大小有什么方法来确定的类似泛型类型

字节大小
TItem <T> = record 
    Data : T; 
end; 

我可以写类似

function TItem <T>.GetByteSize : Integer; 
begin 
if (T = String) then 
    Result := GetStringByteSize (Data as String) 
else 
    Result := SizeOf (Data); 
end; 

或者是专业化的帮助?

function TItem <String>.GetByteSize : Integer; 
begin 
    Result := GetStringByteSize (Data) 
end; 

function TItem <T>.GetByteSize : Integer; 
begin 
    Result := SizeOf (Data); 
end; 

谢谢!

回答

0

不,你不能依赖于专业型,据我所知

2

是不是有什么毛病采取实例化类型的大小?

SizeOf(TItem<string>) 

或者你可以定义GetByteSize这样的:

function TItem <T>.GetByteSize : Integer; 
begin 
    Result := SizeOf(TItem<T>); 
end; 
+0

我想GetByteSize返回包括数据成员的大小,即对于T =字符串对象的字节大小,我想是这样“SizeOf(Data)+ Length(Data)* SizeOf(Char)+ 4” – jpfollenius 2009-04-29 12:47:53