扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在网上看到很多人都在为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;
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者