Delphi中构造函数约束的用例是什么?

Nic*_*ges 4 delphi generics parameterized-types

标题就是它......

你为什么要使用constructor约束?

class约束显然暗示了这一点.

如果你单独使用它,你就不能对你创建的东西做任何事情.

为什么它甚至存在?

附加信息:

就像一个注释,在添加"构造函数"约束之前,以下代码不会编译:

program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;


type
  TSomeClass<T: class> = class
    function GetType: T;
  end;


{ TSomeClass<T> }

function TSomeClass<T>.GetType: T;
begin
  Result := T.Create;
end;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

你为什么要使用构造函数约束?

类约束明确暗示了这一点.

不,这不对.构造函数约束要求类型具有公共的无参数构造函数 - 然后允许调用该构造函数.

并非所有类都具有公共无参数构造函数.