【前置知识】
【构造器的作用】
在实例化对象时需要给一些必要的初始数据(即对象初始化),构造器决定了哪些数据是必要的,而我们可以通过构造器来给这些数据赋值,而不使用其默认的值。
注解:
- 对象需要哪些数据本质上是我们决定的,因为类是我们写出来的,而在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》