testgenericconstraintconstructor.out

来自「格式化源码的最新板」· OUT 代码 · 共 96 行

OUT
96
字号
program testgenericconstraintconstructor;{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  tgenericsansconstructeur<t> = class
  strict private
    fdata: t;
    constructor Create;
  public
    function getdata: t;
    procedure setdata(Value: t);
    property Data: t Read getdata Write setdata;
  end;

  tgenericavecconstructeur<t> = class
  private
    fdata: t;
  public
    constructor Create;
    function getdata: t;
    procedure setdata(Value: t);
    property Data: t Read getdata Write setdata;
  end;

  tgenericcontraint<classeinstanciable:
constructor> = class
  private
    maclasse: classeinstanciable;
  public
    constructor Create;
  end;
  montypegeneric = tgenericavecconstructeur<integer>;

  constructor tgenericsansconstructeur<t>.Create;
  begin
    inherited Create;
  end;

  function tgenericsansconstructeur<t>.getdata: t;
  begin
    Result := fdata;
  end;

  procedure tgenericsansconstructeur<t>.setdata(Value: t);
  begin
    fdata := Value;
  end;

  constructor tgenericavecconstructeur<t>.Create;
  begin
    inherited Create;
  end;

  function tgenericavecconstructeur<t>.getdata: t;
  begin
    Result :=
      fdata;
  end;

  procedure tgenericavecconstructeur<t>.setdata(Value: t);
  begin
    fdata := Value;
  end;

var
  x:  tgenericsansconstructeur<string>;
  y:  montypegeneric;
  z:  tgenericcontraint<tgenericsansconstructeur<integer>>;
  z2: tgenericcontraint<tgenericavecconstructeur<integer>>;
  z3: tgenericcontraint<tgenericavecconstructeur<TObject>>;
  z4: tgenericcontraint<montypegeneric>;

  constructor tgenericcontraint<classeinstanciable>.Create;
  begin
    inherited
    Create;
    maclasse := classeinstanciable.Create;
  end;

begin
  try
    z2 := tgenericcontraint<tgenericavecconstructeur<integer>>.Create;
    writeln(z2.maclasse.tostring);
    z3 := tgenericcontraint<tgenericavecconstructeur<TObject>>.Create;
    writeln(z3.maclasse.tostring);
    z4 := tgenericcontraint<montypegeneric>.Create;
    writeln(z4.maclasse.tostring);
  except
    on e: Exception do
      writeln(e.ClassName, ': ', e.message);
  end;
  readln;
end.
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?