我已经做了一些搜索,并且我认为以下代码可以保证产生输出:
B.X = 7
B.X = 0
A.X = 1
A = 1, B = 0
static class B
{
public static int X = 7;
static B() {
Console.WriteLine("B.X = " + X);
X = A.X;
Console.WriteLine("B.X = " + X);
}
}
static class A
{
public static int X = B.X + 1;
static A() {
Console.WriteLine("A.X = " + X);
}
}
static class Program
{
static void Main() {
Console.WriteLine("A = {0}, B = {1}", A.X, B.X);
}
}
我已经运行了无数次,并且始终在代码部分上方获得输出;我只是想确认它会改变吗?即使从文字上讲,班级A和班级也要B重新安排?
是否保证首次使用静态对象会触发其静态成员的初始化,然后实例化其静态构造函数?对于此程序,A.X在main中使用将触发的初始化,然后A.X依次初始化B.X,然后B()在完成初始化后A.X继续进行A()。最后,Main()将输出A.X和BX`。
梵蒂冈之花
至尊宝的传说
相关分类