Top > Programming > .NetFramework > Tips > InitializeInFieldOrConscrutor
Last-modified: Thu, 21 Mar 2013 20:18:15 JST
Counter:5662 Today:1 Yesterday:2 Online:9
このエントリーをはてなブックマークに追加

初期化はフィールドで行うかコンストラクタで行うか

About

C#などではフィールド変数の初期化をフィールドの宣言時やコンストラクタで行うことができます。どちらか一報に統一していないのは問題であるとして果たしてどちらが良いのでしょうか。

Which?

  • フィールドで初期化
    • フィールドの宣言時に初期化するので初期化の忘れがない。
    • constやstaticなフィールド変数の初期化は宣言時しかできない。
      • (ので初期化方法を統一する意味もあって宣言時に初期化する)
  • コンストラクタで初期化
    • フィールドで初期化してもコンストラクタで再度初期化される可能性がある。
      • 2重の初期化を防ぐ(効率化と不具合の防止)。
    • 当たり前だが変数や引数を初期化に利用できる。
      • 変数や引数を利用した初期化の利用頻度は多い。結果としてコンストラクタで初期化に統一。
    • フィールドで初期化しても中間コードはコンストラクタでの初期化としてあつかわれる?

Reference