zoukankan      html  css  js  c++  java
  • 类初始化顺序

    一.静态成员变量

    可以理解为Appdomain加载时就初始化的类。调用顺序是先调用父类的静态成员变量,逐层调用。

    二.类的成员变量

    调用顺序是先调用父类的成员变量,逐层调用。

    这个例子证明是优先初始化变量:

    public class Customer 
    {
        private string _name = "about";
        private string _value ;
        public Customer(){
            Console.WriteLine(_name);
            Console.WriteLine(_value);
            //output:
            // about
            // null
        }
    }

    三.初始化构造函数

    1.构造函数的调用顺序是先调用System.Object,在按照层次结构由基类向继承类进行,直到编译器要实例化的那个类为止。

    我们经常写的默认构造函数,如果没有在大括号前强制设定另个构造函数的引用,编译器就默认我们要调用基类的构造函数。

    调用另一个构造函数的关键字只能是base和this。

    public class Customer 
    {
        public Customer(){}
        // 
        //public Customer():base(){}
    }

    2.不要在继承类的父类中私有化构造函数,否则会编译器回报错。也印证了构造函数的调用顺序

    public class Customer : GenericCustomer    
    {
        public Customer(){}
    }
    public class GenericCustomer
    {
        private GenericCustomer() { }
    }

    image

    私有化构造函数一般用于静态类或者无需实例的类。因为静态类不需要实例化,私有化构造函数为了防止开发人员无意义的实例化。

    3.构造函数的其它用处

    合理使用this,base能够使代码非常简洁

    public class Customer
    {
        private string _name;
        private string _value;
        public Customer(string name,string value)
        {
            _name = name;
            _value = value;
        }
        public Customer(string name)
          :this(name,"")
        {
            _name = name;
        }
    }

    四.构造函数列表

    参考了一些资料。但无法确定,希望知道的朋友告知一下。

  • 相关阅读:
    Odoo安装教程2-创建新的插件模块第一讲
    Odoo安装教程1-创建第一个 Odoo 应用
    Odoo开发教程21-Odoo服务器端开发者模式
    Ubuntu 安装LAMP
    Roundcube Webmail信息泄露漏洞(CVE-2015-5383)
    Roundcube Webmail跨站脚本漏洞(CVE-2015-5381 )
    Roundcube Webmail File Disclosure Vulnerability(CVE-2017-16651)
    Roundcube 1.2.2
    XAMPP重置MySQL密码
    python importlib动态导入模块
  • 原文地址:https://www.cnblogs.com/yuanhuaming/p/1630429.html
Copyright © 2011-2022 走看看