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

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

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

 

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

interfacetype
  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 .

from作者Blog:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值