モジュール
Constructor /
Destructor は、モジュール・レベルのコードの前後に実行されます。
序文:
モジュール・構築子/デストラクタと、UDTインスタンスの作成/破壊で実行される、UDT構築子/デストラクタを、混同しないでください。
モジュール・構築子/デストラクタを使うと、手続きの実行を、プログラムの開始時/終了時に指定できます。
説明
構築子/デストラクタ キーワードは、手続きをモジュール・レベルのコードの前/後に強制的に実行するために使われます。
モジュールの構築子またはデストラクタとして定義された手続きは、通常の手続きと同じ方法で使用できます(モジュールレベルのコード内から呼び出すこともできます)。
モジュールは、複数の構築子およびデストラクタ手続きを定義できます。
単一モジュールで、ターゲットシステムのビルドおよびランタイム環境に応じて:
- モジュール・構築子/デストラクタは、定義されている順序で実行することも、逆の順序で実行することもできます。
- モジュール・構築子/デストラクタは、構築子/デストラクタを持つグローバルな静的変数の前または後に実行できます。
- モジュール・構築子/デストラクタは、優先度属性を持つ他のモジュール・構築子/デストラクタの前または後に実行できます。
- 優先度属性を持つモジュール・構築子/デストラクターは、構築子/デストラクターを持つグローバルな静的変数の前または後に実行できます。
モジュールの構築子とデストラクターは、セカンダリ・モジュールまたは静的ライブラリーとしてコンパイルされた場合でも、動的ライブラリー(dll)としてロードされた場合でも、常に(メインコードのように)実行されます。
構文
用法
constructor/destructor キーワードは、Sub 定義でのみ使用されます(宣言行レベルでは禁止されています)。
構築子/デストラクタとして定義された Sub は、通常の Sub と同じ方法で使用できます(モジュールレベルのコード内から呼び出すことができます)。
Sub は、空のパラメーター・リストが必要です。
優先度属性(101〜65535の整数)は、構築子/デストラクタを、優先度属性を持つ他の構築子/デストラクタに対して、特定の順序で強制的に実行するために使えます。
優先順位の値には特定の意味はなく、数値と他の構築子/デストラクターの優先順位との関係だけがあります。
101 は最高(最低)の優先度であり、優先度属性を持つ他の構築子/デストラクタに比べて最初(最後)に実行されます。
UDT のパブリック静的メンバー Sub(空のパラメーターリストを持つ)は、Sub 定義に constructor/destructor キーワードを追加することにより、モジュール・構築子/デストラクタとして定義できます。
モジュール・構築子/デストラクターから、構築子/デストラクターを持つグローバル静的オブジェクトへのアクセスは、ビルドシステムによって実行順序が異なるため、避ける必要があります。
参照