delphi 线程教学第六节:TList与泛型

Posted 晓不得2013

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 线程教学第六节:TList与泛型相关的知识,希望对你有一定的参考价值。

第六节: TList 与泛型
 
TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼。
我们先来改进一下带泛型的 TList 基类,以便以后使用。
本例源码下载(delphi XE8版本): FooList.Zip
 
unit uFooList;
interface
uses
  Generics.Collections;
type
 
  TFooList <T>= class(TList<T>)
  private
    procedure FreeAllItems;
  protected
    procedure FreeItem(Item: T);virtual;
    // 子类中需要重载此过程。以确定到底如何释放 Item
    // 如果是 Item 是指针,就用 Dispose(Item);
    // 如果是 Item 是TObject ,就用 Item.free;
  public
    destructor Destroy;override;
    procedure ClearAllItems;
    procedure Lock;  // 给本类设计一把锁。
    procedure Unlock;
  end;
  // 定义加入到 List 的 Item 都由 List 来释放。
  // 定义释放规则很重要!只有规则清楚了,才不会乱套。
  // 通过这样简单的改造, TList 立马好用 N 倍。
 
implementation
{ TFooList<T> }
 
procedure TFooList<T>.ClearAllItems;
begin