Delphi:通用类定义,异步新手

时间:2018-12-12 00:02:52

标签: delphi asynchronous sample generic-collections

我来自Delphi 2007,已经使用了7年,并开始在我的新工作地点与RAD Studio Berlin合作。我正在从事的项目使用了很多TDictionary,Generics集合,异步...等。 例如,有一个课程:

TMyBaseClass = class abstract(TObject)
private
...

end;

TNewClassGeneric<T: TMyBaseClass> = class(TMyAbstractSuperClass)
....

那么这个TNewClassGeneric是什么意思?

我仍在为这些新事物而苦苦挣扎。 我能读到更多有关那些通用,字典和异步程序代码示例的指针吗? 谢谢

1 个答案:

答案 0 :(得分:0)

看下面的下面的类(它应该编译)。注意,它仅使用通用T,而未在MyValue的属性定义中指定类型。这使它可以在两个过程UseGenreicInt和UseGnericString中用作整数或字符串,以演示其功能。 那就是仿制药的力量。您可以定义一个类来对数据进行操作,而无需事先知道要处理的数据类型是int,string等。

unit Sample.Generic;

interface

uses
  System.SysUtils, System.Variants, System.Classes, System.Generics.Collections, VCL.Dialogs;

type
  TSampleGeneric<T> = class
  protected
    FValue: T;
  public
    constructor Create(AValue: T);
    property MyValue: T read FValue write FValue;
  end;

procedure UseGenricString;
procedure UseGenricInt;

implementation

constructor TSampleGeneric<T>.Create(AValue: T);
begin
  FValue := AValue;
end;

procedure UseGenricInt;
var
  LSample: TSampleGeneric<Integer>;
begin
  LSample := TSampleGeneric<Integer>.Create(100);
  try
    ShowMessage(IntToStr(LSample.MyValue));
  finally
    LSample.Free;
  end;
end;

procedure UseGenricString;
var
  LSample: TSampleGeneric<String>;
begin
  LSample := TSampleGeneric<String>.Create('ATestString');
  try
    ShowMessage(LSample.MyValue);
  finally
    LSample.Free;
  end;
end;

end.