静的コンストラクターは常に優先され、インスタンス コンストラクターの前に最初に呼び出されることを認識しています。ただし、1 つのインスタンス クラスと 1 つの静的クラスを持つシナリオを考えてみましょう。結果が最初に Base class から、次に static class になるのはなぜですか? 交換呼び出しも確認しました。それに応じて結果が得られます。しかし、他のインスタンスクラスに関係なく、常に静的クラスを最初に呼び出す必要があるという私の考えは間違っていますか? これが私に提起された理由は、そのクラスを含む名前空間がトリガーされると、静的クラスが自動的にロードされることをどこかで見たからです。次に、その静的コンストラクターが最初に起動することを期待します。なぜそれが起こっていないのですか?どなたかわかりやすくわかりやすく説明していただけませんか。
public class Base
{
public Base() { Console.WriteLine(" I am from normal Base constructor"); }
static Base() { Console.WriteLine("Hey I am from Static Base"); }
}
public static class Base1
{
static Base1() { Console.WriteLine("I am from Static Constructor"); }
public static void StaticMethod() { Console.WriteLine("I am from Static Method"); }
}
static void Main(string[] args)
{
Base b = new Base();
Base1.StaticMethod();
Console.Read();
}