在c#中一个对象创建时按怎样的顺序初始化呢,下例代码说明一切。
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("对象的初始化顺序如下:/n");
SubClass d = new SubClass();
Console.ReadLine();
}
}
class Base
{
static ClassMemberType a = new ClassMemberType("基类静态成员初始化");
ClassMemberType b = new ClassMemberType("基类实例成员初始化");
static Base()
{
Console.WriteLine("基类静态构造方法被调用");
}
public Base()
{
Console.WriteLine("基类实例构造方法被调用");
}
}
class SubClass : Base
{
static ClassMemberType a = new ClassMemberType("派生类静态成员初始化");
ClassMemberType b = new ClassMemberType("派生类实例成员初始化");
static SubClass()
{
Console.WriteLine("派生类静态构造方法被调用");
}
public SubClass()
{
Console.WriteLine("派生类实例构造方法被调用");
}
}
class ClassMemberType
{
static ClassMemberType()
{
Console.WriteLine("静态构造方法被调用");
}
public ClassMemberType(string text)
{
Console.WriteLine(text);
}
}
}
输出结果如下:
对象的初始化顺序如下:
静态构造方法被调用
派生类静态成员初始化
派生类静态构造方法被调用
派生类实例成员初始化
基类静态成员初始化
基类静态构造方法被调用
基类实例成员初始化
基类实例构造方法被调用
派生类实例构造方法被调用