C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#の静的コンストラクターとは?特徴と使い方を実例付きで解説

静的コンストラクター(static constructor)とは、static 修飾子を付けて宣言される特別なコンストラクターのことです。クラスの中で最初に実行されるコードブロックであり、クラスのライフサイクル全体を通じて必ず一度だけ実行されるという大きな特徴を持っています。

静的コンストラクターの主な特徴

  • アクセス修飾子(public や private など)を指定することはできません。
  • 引数(パラメーター)を受け取ることができません。
  • コードから明示的に呼び出すことはできず、最初のインスタンスが生成される前、または静的メンバーが初めて参照される前に、CLR(共通言語ランタイム)によって自動的に呼び出されます。
  • 主に静的フィールドの初期化など、クラス全体に関わる設定を行うために使用されます。

C#における静的コンストラクターのサンプルコード

以下は、C#で静的コンストラクターを使用した具体例です。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Difference {
    class Demo {
        static int val1;
        int val2;

        static Demo() {
            Console.WriteLine("This is Static Constructor");
            val1 = 70;
        }

        public Demo(int val3) {
            Console.WriteLine("This is Instance Constructor");
            val2 = val3;
        }

        private void show() {
            Console.WriteLine("First Value = " + val1);
            Console.WriteLine("Second Value = " + val2);
        }

        static void Main(string[] args) {
            Demo d1 = new Demo(110);
            Demo d2 = new Demo(200);
            d1.show();
            d2.show();
            Console.ReadKey();
        }
    }
}

実行結果

This is Static Constructor
This is Instance Constructor
This is Instance Constructor
First Value = 70
Second Value = 110
First Value = 70
Second Value = 200

コードの解説

このプログラムでは、最初にインスタンス d1 を生成したタイミングで、静的コンストラクターが自動的に呼び出され、「This is Static Constructor」が出力されます。その後、通常のインスタンスコンストラクターが実行されます。

2つ目のインスタンス d2 を生成する際には、静的コンストラクターは再度呼び出されない点に注目してください。出力結果を見ると「This is Static Constructor」が一度しか表示されておらず、静的コンストラクターがクラスのライフサイクルにおいて一度だけ実行されることが確認できます。

また、静的フィールド val1 の値はすべてのインスタンスで共有されているため、どちらのオブジェクトから参照しても「First Value = 70」と表示されます。

  1. JavaScriptのコンストラクターメソッドとは?基本の仕組みと使い方を解説

    JavaScriptのコンストラクターメソッドとは JavaScriptにおけるコンストラクターメソッド(constructor)は、クラス内で生成されるオブジェクトを作成・初期化するための特殊なメソッドです。newキーワードによってインスタンスが生成されるときに自動的に呼び出され、プロパティへの初期値の設定などを行います。 もしクラスにコンストラクターメソッドが定義されていない場合でも問題ありません。その場合はデフォルトコンストラクターが自動的に適用されます。デフォルトコンストラクターは引数を受け取らず、特別な処理を行わない空のメソッドとして動作します。 注意: 1つのクラス内に記述できるコ

  2. CSSのposition: static(静的ポジショニング)とは?基本と使い方を解説

    CSSにおける静的ポジショニング(static positioning)は、すべての要素に適用されるデフォルトの配置方法です。要素は通常のドキュメントフローに従って配置され、top、bottom、left、rightといったオフセットプロパティの影響を受けません。 静的ポジショニングを明示的に指定するには、position: static;を使用します。 position: static の特徴 要素はHTMLの記述順序どおりに、通常のドキュメントフローで配置されます。 top・bottom・left・rightプロパティを指定しても効果はありません。 z-indexも機能しないため、重なり