class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() {
}
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);
}
}
実装プロセス:
- クラスBにはmain関数があるため、最初にクラスBを初期化します。
- Y = A.x + 1; Axが参照され、コンパイラがクラスAを初期化します
- クラスAのメンバー変数x、->コンストラクターA()、Bはこの時点では初期化されていないため、Byは0であるため、Ax = 1です。
- ClassBに戻り、メンバー変数Yの初期化を続行します。値は2です。
の結果