我来自Delphi 2007,已经使用了7年,并开始在我的新工作地点与RAD Studio Berlin合作。我正在从事的项目使用了很多TDictionary,Generics集合,异步...等。 例如,有一个课程:
TMyBaseClass = class abstract(TObject)
private
...
end;
TNewClassGeneric<T: TMyBaseClass> = class(TMyAbstractSuperClass)
....
那么这个TNewClassGeneric是什么意思?
我仍在为这些新事物而苦苦挣扎。 我能读到更多有关那些通用,字典和异步程序代码示例的指针吗? 谢谢
答案 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.