通用类型的大小

发布于 2024-07-18 09:06:34 字数 550 浏览 6 评论 0原文

有没有什么方法可以确定类似的内容的字节大小,

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;

谢谢!

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!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦行七里 2024-07-25 09:06:34

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

SizeOf(TItem<string>)

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

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

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;
深海夜未眠 2024-07-25 09:06:34

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文