类代码执行顺序

     昨天看到了一道面试题,之前曾经遇到过,但是没有深究,导致类代码执行顺序这一块至今很茫然。不过经过我反复查资料和实验,发现茫然有理:因为类代码执行顺序没有必然的谁谁是第一步执行,谁是第二步,谁是...造成这个局面的,就是静态成员。

    静态构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用。 正是这造成的类代码执行顺序有不确定性,但是还有硬性的先后顺序,只是不能说具体说静态成员一定是在第几部执行。

   可以总结规律如下几条:

   1.类静态成员初始化在静态构造函数(如果有)前执行。

   2.类实例成员初始化在实例构造函数前执行。

   3.紧邻父类(如果有)实例构造函数在子类实例构造函数前执行。

根据上面,能发现如果实例化一个子类对象,那么在调用子类实例构造函数前(步骤A),会先调用父类构造函数(步骤B),在步骤B之前,还需要判断父类是否有类静态成员和静态构造函数,(如果二者都有)就按照上述第1条规则。如果父类有类实例成员和实例构造函数,则按第2挑规则执行。如果父类还有父类...依然如此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值