对C#构造器的理解

【前置知识】

对C#中用new关键字实例化对象的理解

【构造器的作用】

在实例化对象时需要给一些必要的初始数据(即对象初始化),构造器决定了哪些数据是必要的,而我们可以通过构造器来给这些数据赋值,而不使用其默认的值。

注解:

  • 对象需要哪些数据本质上是我们决定的,因为类是我们写出来的,而在C#中要对象创建出来时,对象需要的数据要通过构造器来知道,所以可以说构造器决定了对象需要哪些数据。这是不同层面的说法。
  • 可以使用默认值时,相当于类中有无参构造器,所以我们可以不用输入参数(即数据),如果都是有参构造器,那么我们必须要输入参数,否则就会报错,这也保证了我们在初始化对象时进行了赋值。

【构造器的声明】

构造器也是一个特殊的方法,其特殊之处在于:

  • 无返回类型
  • 构造器名与类名完全相同

(注解:说法上,构造器名=方法名,构造器=构造方法=构造函数。类中有很多方法,在调用构造器时,怎么知道哪一个方法是构造方法呢?方法名与类名完全相同的那个方法就是构造方法,即构造器。)

【默认构造器】

类中必须有构造器才能实例化对象:

  • 如果我们没有为类写构造器,那么C#编译器会自动为类添加一个构造器——默认构造器,其没有参数,是无参构造器。
  • 如果我们为类写了构造器,那么就没有默认构造器

【构造器重载】

同方法重载类似,多个构造器之间参数的类型和数量要有区别

【实例说明】

  class Employee
    {
        public Employee(string firstName, string lastName)//构造器
        {
            FirstName = firstName;
            LastName = lastName;
        }

        public Employee(
            int id, string firstName, string lastName)//重载了构造器
        {
            Id = id;
            FirstName = firstName;
            LastName = lastName;
        }

        public Employee(int id)//重载了构造器
        {
            Id = id;
        }

        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Salary { get; set; } = "Not Enough";


        // ...
    }
    public class Program
    {
        public static void Main()
        {
            Employee employee;
            employee = new Employee("Inigo", "Montoya");//调用构造器
            employee.Salary = "Too Little";

            System.Console.WriteLine(
                "{0} {1}: {2}",
                employee.FirstName,
                employee.LastName,
                employee.Salary);
        }
        // ...
    }

【参考】

[1]《C#本质论5.0》

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值