C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  496 随笔 :: 0 文章 :: 634 评论 :: 571万 阅读

  今天去面试的时候被一道题问得一点脾气都没有,今天特地来研究下。

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

  现在贴上从另外一个.net程序员写的实例,稍微改下。

复制代码
    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();
        }
    }  
复制代码

来看看最后的输出结果:

       1子类静态成员变量  
            2子类静态构造函数  
            3子类实例成员变量  
            4父类静态成员变量  
            5父类静态构造函数  
            6父类实例成员变量  
            7父类构造函数  
            8子类构造函数  

看来除了构造函数,子类全部比父类先执行,其顺序是静态先于实例,变量先于函数。然后子父类实例函数都是最后执行。

posted on   逆心  阅读(5160)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示