在 Delphi 中,一個單元的 initialization
部分在該單元首次被使用時執行一次。具體來說,initialization
部分是在單元的初始化過程中執行的,通常是在以下幾種情況下首次觸發:
-
單元被顯式引用:當你在程式碼中使用了某個單元(例如透過
uses
子句)時,如果該單元尚未被載入和初始化,那麼它的initialization
部分將會被執行。 -
程式啟動時自動載入的單元:如果單元是在專案的
.dpr
檔案(專案檔案)中被引用,那麼在程式啟動時,這些單元會自動被載入和初始化,其initialization
部分也會被執行。
重要的是,initialization
部分只會在該單元首次載入時執行一次。無論該單元在程式中被引用多少次,或者程式中有多少個其他單元引用了它,initialization
部分的程式碼都只會執行一次。
相對應的,還有一個 finalization
部分,它在單元被解除安裝時執行,通常用於清理資源或執行其他收尾工作。finalization
部分同樣只會執行一次,在單位被解除安裝時觸發。
以下是一個簡單的例子來說明這一點:
unit MyUnit;
interface
uses
SysUtils;
implementation
initialization
Writeln('MyUnit initialization');
finalization
Writeln('MyUnit finalization');
end.
如果你在不同的單元或者程式檔案中引用 MyUnit
,你會發現 MyUnit initialization
只會輸出一次,即首次載入該單元時。同樣地,MyUnit finalization
也只會在程式結束時執行一次。