【C#】静的コンストラクタ

インスタンスを作成するためにコンストラクタが使用されますが、それとは別に「静的コンストラクタ」というものがあることをご存知でしょうか?

静的コンストラクタは定義されたクラスの要素に「初めて」アクセスする際に「一度だけ」自動的に実行されるメソッドになります。
記述は通常のコンストラクタのアクセス修飾子に"static"を追加するだけです。

public class TestClass
{
   public TestClass() { }
   static TestClass()
   {
      //一度だけ実行したい処理を記述
   }
}

静的コンストラクタはその名前の通りstaticメンバーですので、インスタンスメンバーにはアクセスできません。
そもそもインスタンスメンバーはインスタンス毎に内容が変わりえますので、通常のコンストラクタで設定すればいいことです。
静的コンストラクタは静的メンバーの初期化や、静的メソッドの1度だけの呼び出し(他のクラス情報を参照するためにコンパイル時には不定の場合など)などに用います。
なお、クラスの要素に「初めて」アクセスする際に「一度だけ」自動的に実行される、という動作上、引数を与えることはできません。実行時に何らかの変数を用いたい場合には上記の通り、静的コンストラクタ実行前に他のクラスに情報を格納しておいてそのメンバーを参照するようにする、ということが考えられます。

以上で静的コンストラクタの説明を終了します。

いいなと思ったら応援しよう!