delphi - 通用类型的大小

标签 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;

谢谢!

最佳答案

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

SizeOf(TItem<string>)

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

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

关于delphi - 通用类型的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802011/

相关文章:

delphi - 隐藏仅在私有(private)协会中使用的成员的类?

swift - 为什么是 'there cannot be more than one conformance, even with different conditional bounds' ?

Java:转换为类型参数

德尔福2009 : Is it possibly dangerous to use TList<[any interface]> with default comparator?

delphi - 为什么 Delphi 编译器在构建特定项目期间会创建名为 'c' 的文件?

Delphi IDE 项目 "Clean"命令——它有什么作用?

sql-server - Delphi:使用参数时如何获取传递到服务器的查询

Delphi - 清理 TListBox 项目

arrays - Delphi XE6,带有 boolean 成员字段的记录的3D数组,不会建立

Java、泛型和继承