大家一起来探讨一下静态构造器和静态字段调用的先后顺序吧
今天在MSDN中看文章的时候,看到静态构造函数这一段,发现自己有点不懂,想了好半天还没弄明白,现在把它贴出来,看看谁能够帮助我,呵呵,我先把代码贴出来,
using System;
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);
}
}
产生输出
X = 1, Y = 2
对于这个输出我有点疑问,在这段代码编译运行的时候,首先,由于class B里面带有Main,所以肯定是要先运行static B(),但是在class B()中又有静态的字段,所以会先执行Y = A.X + 1这行代码,到了这里的时候,由于A.X这句,所以在class A中,程序会先执行静态构造器,静态构造器中的代码X = B.Y + 1,这个时候该怎么往下执行了?请教一下
using System;
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);
}
}
产生输出
X = 1, Y = 2
对于这个输出我有点疑问,在这段代码编译运行的时候,首先,由于class B里面带有Main,所以肯定是要先运行static B(),但是在class B()中又有静态的字段,所以会先执行Y = A.X + 1这行代码,到了这里的时候,由于A.X这句,所以在class A中,程序会先执行静态构造器,静态构造器中的代码X = B.Y + 1,这个时候该怎么往下执行了?请教一下