Delphi中实现C++/Java类似静态变量的功能

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

在网上看到很多人都在为Delphi是否支持C++/Java中的静态变量及静态方法的功能而困扰,其实这在Delphi中是很简单的.

静态方法就是使用Class Function. 静态变量则使用单元局部变量来实现. 代码如下:

//=========================================

// StaticVarTestU - 定义了可以计数的类,通过类方法即可访问此类的对象数

//=========================================

unit StaticVarTestU;

interface

type

TStaticVarClass = class

public

//constructor

constructor Create();

destructor Destroy; override;

//类方法,取得对象的计数

class function ObjectCount: integer;

protected

private

end;

implementation

Var

LObjCount: integer;

{ TStaticVarClass }

constructor TStaticVarClass.Create;

begin

inc(LObjCount); //使用局部变量

end;

destructor TStaticVarClass.Destroy;

begin

dec(LObjCount); //使用局部变量

inherited;

end;

class function TStaticVarClass.ObjectCount: integer;

begin

Result := LObjCount; //返回局部变量

end;

initialization

LObjCount := 0; //初始化

finalization

LObjCount := 0;

end.

//=========================================

// StaticTest - 测试代码,创建10个对象,并访问其计数,再Free掉.

//=========================================

program StaticTest;

{$APPTYPE CONSOLE}

uses

SysUtils,

Classes,

StaticVarTestU in 'StaticVarTestU.pas';

procedure printObjCount;

begin

WriteLn(Format('The Object Count now is %d', [TStaticVarClass.ObjectCount]));

end;

var

i: integer;

mObjList: TList;

begin

{ TODO -oUser -cConsole Main : Insert code here }

mObjList := TList.Create;

printObjCount;

for i := 0 to 10 do

begin

mObjList.Add(TStaticVarClass.Create());

printObjCount;

end;

for i := 0 to mObjList.Count -1 do

begin

TStaticVarClass(mObjList.Items[i]).Free;

printObjCount;

end;

mObjList.Free;

readln;

end.

请大家指正....

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有