通用类型的大小

时间:2009-04-29 11:54:56

标签: delphi generics delphi-2009 specialization

有没有办法确定像

这样的字节大小
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;

谢谢!

2 个答案:

答案 0 :(得分:3)

获取实例化类型的大小是否有问题?

SizeOf(TItem<string>)

或者您可以像这样定义GetByteSize:

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

答案 1 :(得分:0)

不,据我所知,你不能根据类型进行专业化