父子类,实例、静态成员变量,构造函数的执行顺序

父子类,实例、静态成员变量,构造函数的执行顺序
1子类静态成员变量  
2子类静态构造函数  
3子类实例成员变量  
4父类静态成员变量  
5父类静态构造函数  
6父类实例成员变量  
7父类构造函数  
8子类构造函数 
看来除了构造函数,子类全部比父类先执行,其顺序是静态先于实例,变量先于函数。然后子父类实例函数都是最后执行。
namespace ConsoleApplication
{
    public class ShowInfo
    {
        public ShowInfo(string info)
        {
            Console.WriteLine(info);
        }
    }

    class father
    {
        public static ShowInfo StaticFatherMember = new ShowInfo("父类静态成员变量执行"); //父类静态成员变量
        public ShowInfo InstanceFatherMember = new ShowInfo("父类实例成员变量执行");     //父类实例成员变量
        static father()         //父类构造函数  
        {
            ShowInfo StaticFatherMethod = new ShowInfo("父类静态构造函数执行");     //父类静态构造函数
        }
        public father()
        {
            ShowInfo bcsI = new ShowInfo("父类实例构造函数执行");
        }
    }
    class son : father
    {
        public static ShowInfo StaticSonMember = new ShowInfo("子类静态成员变量执行");
        public ShowInfo InstanceStaticSonMember = new ShowInfo("子类实例成员变量执行");

        static son()
        {
            ShowInfo StaticSonMethod = new ShowInfo("子类静态构造函数执行");
        }
        public son()
        {
            ShowInfo InstanceSonMethod = new ShowInfo("子类实例构造函数执行");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //各个对象的初始化顺序如下:  
            //①子类静态成员变量  
            //②子类静态构造函数  
            //③子类实例成员变量  
            //④父类静态成员变量  
            //⑤父类静态构造函数  
            //⑥父类实例成员变量  
            //⑦父类构造函数  
            //⑧子类构造函数  
            son s = new son();
            Console.ReadKey();
        }
    }
}

来看看最后的输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值