uses子句對Delphi程式碼可見性和初始化的影響
阿新 • • 發佈:2019-02-19
uses子句是delphi的程式結構(program)和單元結構(unit)的可選組成部分,Delphi依賴uses管理程式對單元和單元對單元的引用,uses語句可以出現在程式碼的以下三個部分:
- 程式檔案.dpr的程式頭與宣告(語句)之間
- 單元檔案.pas緊跟interface關鍵字之後
- 單元檔案.pas緊跟implementation之後
uses子句列出了被程式、庫或單元引用的單元,當引用多個單元時,按單元在uses子句中出現的順序執行被引用單元的初始化initialization,按相反的順序執行被引用單元的終結化finalization。
當被引用的多個單元都定義了同名的變數、常量、型別、過程或函式時,最後被引用的單元的變數、常量、型別、過程或函式生效。單元只需要在uses子句中列出直接引用的單元名稱,不需要列出間接引用的單元名稱;發Unit A需要使用Unit B宣告的變數、常量、型別、過程或函式,而Unit B需要使用Unit C宣告的變數、常量、型別、過程或函式,則Unit A的uses子句只需包含Unit B,不需要包含Unit C。
引用其它單元的單元程式碼只能使用直接引用的單元宣告的變數、常量、型別、過程或函式,不能使用間接引用的單元宣告的變數、常量、型別、過程或函式。
通常情況下,建議在單元的implementation部分段使用uses子句引用其它單元,如果需要在interface部分使用引用單元的變數、常量、型別、過程或函式,則需要在interface部分使用uses子句引用其它單元;允許在各個單元implementation部分相互引用,但不允許各個單元在interface部分相互引用,必須有一部分引用是在程式碼的implementation部分宣告。
注意:System單元被每個專案自動引用,不能顯式的通過uses子句引用