この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19118|答える: 2

[出典] クラスにおける静的、非静的、構成的メソッドの実行順序の概要

[リンクをコピー]
掲載地 2017/04/06 15:12:32 | | | |
1 /*

2 * いくつかの原則

3 * 1. 静的メンバー変数

4 * 1. 静的メンバー変数はクラス変数であり、すべてのオブジェクトは同じメモリ空間を共有します

5 * 2. 静的メンバー変数の宣言と定義は、クラスが初めて読み込まれたときに一度だけ実行されます

6 * 3. クラスを初めて読み込む際、まず型に応じてすべての静的メンバー変数に初期値を割り当て、その後r値を持つ変数に右値を付けます

7 * 2. 静的初期ブロック

8 * 1. 静的初期化ブロックはクラスが初めてロードされたときに一度だけ実行されます

9          * ······ 複数の静的メンバー変数と静的開始の高速参照出現順序は順次実行されます······

10 * 3. 動的メンバー変数

11 * 1. 動的メンバー変数の定義は、オブジェクトがインスタンス化されるたびにコンストラクタより先に実行されます

12 * 4. 動的初期化ブロック

13*1. 動的初期化ブロックはオブジェクトがインスタンス化されるたびにコンストラクタより先に実行されます

14          * ······ 複数の動的メンバー変数や動的初期化ブロックは、現れる順序で実行されます······

15 * まとめ:一般的に、クラスが初めてロードされるときは、継承を伴わずに以下の順序で実行されます

16 * 1. 静的メンバー変数の定義と静的初期化ブロックを発生順に実行します

17 * 2. 動的メンバー変数定義および動的初期化ブロックを発生順に実行します

18 * 3. 構造体を実行

19 * オブジェクトを再度インスタンス化する際、実行できるのはステップ2と3のみ

20          *  

21          * ············ メンバー変数や定義、初期化ブロックはコンストラクタより先に実行されます·········

22 * 5. 相続が関わる場合、それは以下の順序で行われる

23 * 1. 親クラスの静的メンバー変数定義と静的初期化ブロックを実行し、サブクラスの静的メンバー変数定義および静的初期化ブロックを実行します

24 * 2. 親クラスの非静的メンバー変数定義と動的初期化ブロックを実行し、親クラスの構築メソッドを実行します

25 * 3. サブクラスの非静的メンバー変数の定義を実行し、ブロックを動的に初期化し、サブクラス構築メソッドを実行します。

26 * また:親クラスの構成メソッドで使われるメソッドがサブクラスによって書き換えられている場合、サブクラスオブジェクトを構築する際に親クラスのコンストラクタを呼び出す際にサブクラスの書き換えメソッドが使われます





先の:.ctorおよび.cctor of .netの
次に:nhibernate ネイティブの一次キー生成ポリシー
 地主| 掲載地 2017/04/06 15:17:20 |


クラスを初めて読み込む際は、まず型に応じてすべての静的メンバー変数に初期値を割り当て、その後、付加された右値に対して正しい値を持つ複数の静的メンバー変数を連続して実行します
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com