「C# 高度なプログラミング、第 4 版」を参照してください。
· 静的コンストラクターを記述する理由の 1 つは、クラスを初めて使用する前に外部ソースから初期化する必要があるいくつかの静的フィールドまたはプロパティがクラスにあるためです。
· 静的コンストラクターは、コードがクラスを参照する前に、最大 1 回実行されます。
· 静的コンストラクターにはアクセス修飾子がなく、他の C# コードによって呼び出されることがないため、public や private などのアクセス修飾子は無意味です。
· 静的コンストラクターはパラメーターを取ることができず、クラスは静的コンストラクターを 1 つだけ持つことができます。
· 静的コンストラクターは、クラスの静的メンバーにのみアクセスでき、インスタンス メンバーにはアクセスできません。
以下に例を示します。
パブリック クラス UserPreferences
{
public static readonly Color BackColor;
静的 UserPreferences()
{
// アウトソースから BackColor を読み取ります。
}
// ...
}
クラスMainEntryPoint
{
静的 void Main()
{
Console.WriteLine(UserPreferences.BackColor.ToString());
}
}
パラメーターのないインスタンス コンストラクターは、クラス内で静的コンストラクターと安全に共存できることに注意してください。パラメータリストは同じですが、静的コンストラクタはクラスロード時に実行され、インスタンスコンストラクタはインスタンス作成時に実行されるため、コンストラクタの実行に矛盾はありません。
クラスMyTempClass
{
パブリック静的整数 = 100;
静的 MyTempClass()
{
数値 = 101;
}
}
クラスプログラム
{
static void Main(string[] args)
{
int x = MyTempClass.num;
Console.WriteLine();
}
}
上記のプログラムでは、静的コンストラクターを追加しない場合、x の値は 100 になります。コンストラクターを追加すると、x の値は 101 になります。