关于.net中变量的初始化顺序的文章开过一些,不过看过就忘记了。还是自己钻研一下,印象比较深刻。
class Program
{
static void Main(string[] args)
{
DriveB d=new DriveB();
}
}
class BaseA
{
static DisplayClass a = new DisplayClass("基类静态成员初始化");
DisplayClass BaseA_c = new DisplayClass("基类实例变量BaseA_c初始化");
public BaseA()
{
Console.WriteLine("基类构造方法被调用");
}
}
class DriveB :BaseA
{
static DisplayClass DriveB_b = new DisplayClass("继承类静态成员DriveB_b初始化");
//static BaseA DriveB_a = new BaseA();
DisplayClass DriveB_c = new DisplayClass("继承类实例变量DriveB_c初始化");
public DriveB()
{
Console.WriteLine("继承类构造方法被调用");
}
}
class DisplayClass
{
public DisplayClass(string diplayString)
{
Console.WriteLine(diplayString);
Console.WriteLine();
}
}
{
static void Main(string[] args)
{
DriveB d=new DriveB();
}
}
class BaseA
{
static DisplayClass a = new DisplayClass("基类静态成员初始化");
DisplayClass BaseA_c = new DisplayClass("基类实例变量BaseA_c初始化");
public BaseA()
{
Console.WriteLine("基类构造方法被调用");
}
}
class DriveB :BaseA
{
static DisplayClass DriveB_b = new DisplayClass("继承类静态成员DriveB_b初始化");
//static BaseA DriveB_a = new BaseA();
DisplayClass DriveB_c = new DisplayClass("继承类实例变量DriveB_c初始化");
public DriveB()
{
Console.WriteLine("继承类构造方法被调用");
}
}
class DisplayClass
{
public DisplayClass(string diplayString)
{
Console.WriteLine(diplayString);
Console.WriteLine();
}
}
看一下结果:
得出初始化顺序结论:
1)继承类静态成员变量初始化
2)继承类实例变量初始化
3)基类静态静态成员变量初始化
4)基类实例变量初始化
5)基类构造方法调用
6)继承类构造方法调用。
另外发现.net中变量的初始化和java似乎不同。
欢迎大家批评指正。