4

次のようなもののバイト単位のサイズを決定する方法はありますか

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;

ありがとう!

4

2 に答える 2

4

インスタンス化された型のサイズを取ることに何か問題がありますか?

SizeOf(TItem<string>)

または、次のように GetByteSize を定義することもできます。

function TItem <T>.GetByteSize : Integer;
begin
  Result := SizeOf(TItem<T>);
end;
于 2009-04-29T12:44:47.700 に答える
0

いいえ、私の知る限り、タイプによって特化することはできません

于 2009-04-29T12:15:59.860 に答える