Delphi2010發布了.
雖然憑著對Delphi的熱愛第一時間就安裝了,但是現在可能是年紀大了,對新事物缺乏興趣了.一直都沒有仔細研究.
今天有點時間試了一下新功能.
本來C#和Delphi.NET是支持類的構造函數/析構函數的(注意不是實例的構造和析構).也就是在模塊初始化/卸載的時候會調用.
這樣有很多好處,比如說類的靜態變量的初始化什么的都可以在這里做.
Delphi For Win32對這方面的需求還不是很大.
第一個原因.歷史上舊版Delphi不支持靜態變量.只能用Unit的全局變量+類函數來模擬.所以類的構造析構基本沒需求.從Delphhi2005還是2006開始才支持Class var的.記得不太清楚了
第二個原因.Delphi的Unit有初始化節和反初始化節(initialization/finalization).很多初始化工作都可以在這里面做.比如說類的靜態變量.所以對類的構造函數需求不是很大.
隨手試了一下Delphi2010.驚喜的發現不知道什么時候Delphi2010已經開始支持類的構造和析構函數了.易博龍和CodeGear居然在介紹Delphi2010的新變化的同時都沒有介紹這個特征.
貼一段代碼:
typeTTest = classprivateclass var StaticABC : Integer; //類變量(類似C++的靜態變量.但不完全等同)varFABC : Integer; //普通成員變量publicclass constructor Create();//類的構造函數class destructor Destroy; //類的析構函數constructor Create(); //實例的構造函數destructor Destroy; override; //實例的析構函數end;{ TTest }class constructor TTest.Create; beginStaticABC := 1234; end;class destructor TTest.Destroy; beginend;constructor TTest.Create; beginFABC := StaticABC; end;destructor TTest.Destroy; begininherited Destroy; end;
呵呵.很有意思.雖然以前用Unit的initialization/finalization可以實現.但是如果有了類的構造和析構語法的話代碼的可讀性會更好.
同時還發現結構體(Record)也可以用一樣的語法.可編譯通過,但是實際上卻沒有效果.估計以后會加上這個功能吧