⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testgenericoperatoras.out

📁 格式化源码的最新板
💻 OUT
字号:
program TestGenericOperatorAs;

{$APPTYPE CONSOLE}


{ AFS December 2007 

  This code compiles, but is not semantically meaningfull.
  It is test cases for the code-formating utility

  Test new generics syntax - code from TridenT
}

uses
  SysUtils;

type
  MaClasse = class
    function Contraint<X:
    class>(AValue: TObject): X;
    function NonContraint<X>(AValue: TObject): X;
    procedure Test;
  end;

  function MaClasse.Contraint<X>(AValue: TObject): X;
  begin
    Result := AValue as X;
  end;

  function MaClasse.NonContraint<X>(AValue: TObject): X;
  begin
    Result := AValue as X;
  end;


  procedure MaClasse.Test;
  var
    Resultat: TObject;
    Str:      string;
    Int:      integer;
  begin
    Resultat := TObject.Create;
    Writeln('Classe de Resultat = ', Resultat.ClassName);
    Resultat := Contraint<TObject>(Str);    // Si Nil, Resulat = Nil
    Resultat := NonContraint<TObject>(Str); // Si Nil, Resulat = Nil
    Writeln('Resultat = Nil');
    try
      //Int:=Contraint<Integer>(Str);  //E2511 Le param鑤re type 'X' doit 阾re un type de classe
      Int := NonContraint<integer>(Str);  //NullReferenceException:
    except
      on E: NullReferenceException do ;
    end;

    Str      := 'Test'; //Intanciation de Str
    Resultat := TObject.Create;
    Writeln('Classe de Resultat = ', Resultat.ClassName); //Resultat = TObject
    Resultat := Contraint<TObject>(Str);    //Ok
    Writeln('Classe de Resultat = ', Resultat.ClassName); //Resultat = TString;
    Resultat := NonContraint<TObject>(Str); //Ok

    try
      Int := NonContraint<integer>(Str); //InvalidCastException
    except
      on E: InvalidCastException do ;
    end;

  end;


var
  Classe: MaClasse;

begin
  Classe := MaClasse.Create;
  try
    Classe.Test;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  readln;
end.

⌨️ 快捷键说明

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