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("{0}, {1}", A.X, B.Y);
}
}结果是1,2
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("{0}, {1}", A.X, B.Y);
}
}结果是1,2
static A()
{
X = B.Y + 1;
}
1+1=2就这么简单,static
{
public static int X;//静态成员在第一次被访问之前并且在调用静态构造函数(如有存在)之前进行初始化。
static A()
{
//静态构造函数用于初始化任何静态数据,
//或用于执行仅需执行一次的特定操作。
//在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
X = B.Y + 1;//第二步,B.Y=0,执行完后X=1
}
}
class B
{
public static int Y = A.X + 1;//第一步,A.X=0,执行完后Y=2
static B() { }
static void Main()
{
Console.WriteLine("{0}, {1}", A.X, B.Y);
}
}
{
public static int X;//静态成员在第一次被访问之前并且在调用静态构造函数(如有存在)之前进行初始化。
static A()
{
//静态构造函数用于初始化任何静态数据,
//或用于执行仅需执行一次的特定操作。
//在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
X = B.Y + 1;//第二步,执行前B.Y=0,X=0;,执行后B.Y=0,X=1
}
}
class B
{
public static int Y = A.X + 1;//第一步,执行前A.X=0,Y=0;执行完后A.X=1,Y=2
static B() { }
static void Main()
{
Console.WriteLine("{0}, {1}", A.X, B.Y);
}
}
LZ你可以自己试下:如果Y= B.某变量 + 1;的话在CLASS A内X = B.Y + 1时 B。Y就会计算B.某变量 + 1的值了
如果Y= B.某变量 + 1;如果是非B的话就是X = B.Y + 1时B.Y就不计算直接等于0了。。