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

📄 testgenericoperatoris.out

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

{$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,
  Classes;

type
  MaClasse<T> = class
    unchamp: T;
    procedure Test<X>;
    procedure Test2<X>;
    procedure Test3<X:
    constructor>;
  end;

  NullInteger = System.Nullable<integer>;

  procedure MaClasse<T>.Test<X>;
  var
    Variable: X;
  begin
    Writeln;
    Write(#9 + 'Le test sur X<', Typeof(X), '> is T<', typeof(T), '> est ');
    if TObject(Variable) is T then
      writeln('Vrai')
    else
      writeln('Faux');
    if assigned(TObject(Variable)) then
      writeln(#9 + 'assigned(Variable) =Vrai')
    else
      writeln(#9 + 'assigned(Variable)=Faux');
  end;

  procedure MaClasse<T>.Test2<X>;
  var
    Variable: X;
  begin
    { ne change rien au test}
    if assigned(TObject(Variable)) then
      Variable := Default(X);
    Writeln;
    Write(#9 + 'Le test sur X<', Typeof(X), '> is T<', typeof(T), '> est ');
    if TObject(Variable) is T then
      writeln('Vrai')
    else
      writeln('Faux');
  end;

  procedure MaClasse<T>.Test3<X>;
  var
    Variable: X;
  begin
    Writeln;
    Write(#9 + 'Le test sur X<', Typeof(X), '> is T<', typeof(T), '> est ');
    Variable := X.Create;
    if TObject(Variable) is T then
      writeln('Vrai')
    else
      writeln('Faux');
    if assigned(TObject(Variable)) then
      writeln(#9 + 'assigned(Variable) =Vrai')
    else
      writeln(#9 + 'assigned(Variable)=Faux');
  end;


  procedure Test(Resultat: boolean);
  begin
    if Resultat then
      writeln('Vrai')
    else
      writeln('Faux');
  end;

var
  Classe1: MaClasse<TObject>;
  Classe2: MaClasse<System.Nullable<integer>>;
  Classe3: MaClasse<integer>;
  VarNull: NullInteger;
  Objet:   TObject;
  int:     integer;


begin
  try
    //Les commentaires en anglais proviennent des spec du C# 2.0
    //If the type of e is a reference type or a nullable type and the value of e is null, the result is false.
    // Sous Delphi ce test est toujours vrai
    Writeln('Test pour la variable varNull = null');
    varNull := Default(System.Nullable<integer>);
    Test(varNull is NullInteger);
    varNull := 10;
    Test(varNull is NullInteger);


    Writeln('Test pour la variable Objet 

⌨️ 快捷键说明

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