プロジェクトに静的クラスがもう 1 つある場合、どの静的クラスが最初に初期化されますか?
例: 以下のコードでは、null 例外が発生します。
class Program
{
static void Main(string[] args)
{
First.Write();
Second.Write();
}
}
static class First
{
public static int[] firstArray = new int[20];
public static int[] secondArray = Second.secondArray;
public static void Write()
{
Console.WriteLine(firstArray.ToString());
Console.WriteLine(secondArray.ToString());
}
}
static class Second
{
public static int[] firstArray = First.firstArray;
public static int[] secondArray = new int[30];
public static void Write()
{
Console.WriteLine(firstArray.ToString());
Console.WriteLine(secondArray.ToString());
}
}
注意を払うと、First
クラスがそれ自体を初期化すると、secondArray
フィールドSecond
が null になることがわかります。ただし、Second
クラスが最初に初期化される場合、Second
クラスはfirstArray
null になります。どの初期化が最初に異なる結果になるかを伝えようとしています。
私のプロジェクトに関する抽象的な質問だと思います。予期しない結果が得られる理由を理解しようとしているときに、これに遭遇します。