程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi2009初體驗 - 語言篇 - 體驗泛型(二)(3)

Delphi2009初體驗 - 語言篇 - 體驗泛型(二)(3)

編輯:Delphi

九、體驗泛型約束條件

以下通過代碼針對泛型類,對Delphi2009所支持的泛型約束條件進行驗證。

1、類類型約束條件

約束模板類型T只能為類類型

1program TestGenericClass;
2
3{$APPTYPE CONSOLE}
4
5uses
6  SysUtils;
7
8type
9  TGenericsClass1<T: class> = class // 注意在此進行約束
10  private
11    fValue: T;
12  public
13    constructor Create(aValue: T); virtual;
14    property Value: T read fValue write fValue;
15  end;
16
17var
18  gc1: TGenericsClass1<TObject>;
19
20{ TGenericsClass1<T> }
21
22constructor TGenericsClass1<T>.Create(aValue: T);
23begin
24  fValue := aValue;
25end;
26
27begin
28  gc1 := TGenericsClass1<TObject>.Create(nil);
29  Writeln(gc1.Value = nil);
30  FreeAndNil(gc1);
31
32  Readln;
33end.

2、對象類型約束條件

約束T只能為某一個對象類型

1program TestGenericArray;
2
3{$APPTYPE CONSOLE}
4
5uses
6  SysUtils,
7  Classes,
8  Contnrs;
9
10type
11  TGenericsClass1<T: TList> = class // 注意在此進行約束
12  private
13    fValue: T;
14  public
15    constructor Create(aValue: T); virtual;
16    property Value: T read fValue write fValue;
17  end;
18
19var
20  gc1: TGenericsClass1<TObjectList>;
21
22{ TGenericsClass1<T> }
23
24constructor TGenericsClass1<T>.Create(aValue: T);
25begin
26  fValue := aValue;
27end;
28
29begin
30  gc1 := TGenericsClass1<TObjectList>.Create(nil);
31  Writeln(gc1.Value = nil);
32  FreeAndNil(gc1);
33
34  Readln;
35end.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved