10.C# 构造函数

1.构造函数

构造函数是用来初始化对象的,只能由new运算符调用。构造函数与类同名,没有返回值,不能用void修饰,可以有public和private两种修饰符,当用private修饰时外界不能访问到这个构造函数。

C#有一个无参的默认构造函数,如果需要做特别的初始化可以自己添加构造函数,如

class DisplayClass{
        public DisplayClass(string displayString)
        {
            Console.WriteLine(displayString);
            Console.WriteLine();
        }

        public DisplayClass()//默认构造函数
        { 
            
        }
    }

2.构造函数执行顺序

类继承时子类需要调用父类的构造函数才能正确初始化父类,如果子类没有显式调用父类的构造函数,系统会调用父类的默认构造函数,可以使用构造函数初始化器指定需要调用的父类构造函数,如下使用base调用父类的构造函数

    class BaseA
    {
      
        public BaseA()
        {
            Console.WriteLine("基类构造方法被调用");
        }

        public BaseA(string baseString)
        {
            Console.WriteLine(baseString);
        }
    }

    class DriveB : BaseA
    {
       
        public DriveB():base("基类构造方法被调用")
        {
            Console.WriteLine("继承类构造方法被调用");
        }
    }

也可以使用this调用当前类其他构造函数

 class Person
    {
        int age;
        string name;

        public Person()
        { 
            
        }

        public Person(int age)
        {
            this.age = age;
        }

        public Person(int age, string name):this(age)
        {
            this.name = name;
        }

    }

当有继承关系时构造函数的调用顺序 :System.Object的构造函数-> 基类的构造函数->子类的构造函数,因为所有类都是继承Object类的,所以最先调用Object类的构造函数

原文地址:https://www.cnblogs.com/lidaying5/p/10511100.html