Size of generic type

懵懂的女人 提交于 2019-12-10 10:09:35

问题


Is there any way to determine the size in bytes of something like

TItem <T> = record
  Data : T;
end;

Can I write something like

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

or perhaps with the help of specialization?

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

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

Thanks!


回答1:


Is there something wrong with taking the size of the instantiated type?

SizeOf(TItem<string>)

Or you could define GetByteSize like this:

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



回答2:


No, you can't specialize depending on type as far as I know



来源:https://stackoverflow.com/questions/802011/size-of-generic-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!