zoukankan      html  css  js  c++  java
  • 你可能不知道的对象实例化顺序

    猜猜下面这段代码的输入,我预计90%以上的人给不出正确的答案
     
    void Main()
    {
        InitSeqBase x =
    new InitSeqChild();
    }

    public class InitSeqBase
    {
        
    public static Nothing _SField = new Nothing("base static field initializer");
        
    static InitSeqBase()
        {
            Console.WriteLine("base static constructor");
        }
        
        
    public Nothing InsField = new Nothing("base Instance field initializer");
        
        
    public InitSeqBase()
        {
            Console.WriteLine("base Instance constructor");
        }
    }

    public class InitSeqChild : InitSeqBase
    {
        
    public static Nothing _SField = new Nothing("child static field initializer");
        
    static InitSeqChild()
        {
            Console.WriteLine("child static constructor");
        }
        
        
    public Nothing InsField = new Nothing("child Instance field initializer");
        
        
    public InitSeqChild()
        {
            Console.WriteLine("child Instance constructor");
        }
    }

    public class Nothing
    {
        
    public Nothing(string s)
        {
            Console.WriteLine(s);
        }
    }
     
     
     
     
     
    答案在此(选中后可见,白色字体):
    child static field initializer
    child static constructor
    child Instance field initializer
    base static field initializer
    base static constructor
    base Instance field initializer
    base Instance constructor
    child Instance constructor
    谢谢参与!

  • 相关阅读:
    【APUE | 10】函数signal
    【C++ Primer | 15】C++虚函数表剖析②
    【C++ Primer | 15】C++类内存分布
    VMware虚拟机 Ubuntu 16.04 安装
    主题
    【C++ Primer | 15】构造函数与拷贝控制
    08 IO库
    001 库函数【01】
    DataTable序列化及反序列化Json
    DbHelper简单的使用
  • 原文地址:https://www.cnblogs.com/teamleader/p/1944810.html
Copyright © 2011-2022 走看看