构造函数
- 在class或struct上运行初始化代码
 - 和定义方法差不多,但构造函数的名和类型名一致,返回类型也和类型一致,并且返回类型就省略不写了
 - C#7,允许单语句的构造函数写成expression-bodied成员的形式
 
构造函数重载
- class和struct可以重载构造函数
 - 调用重载构造函数时使用this
 - 当同一个类型下的构造函数A调用构造函数B的时候,B先执行
 - 可以把表达式传递给另一个构造函数,但表达式本身不能使用this引用,因为这时候对象还没有被初始化,所以对象上任何方法的调用都会失败。但是可以使用static方法
 
因为这个时候还没有被初始化  所以不能用this
无参构造函数
- 对于class,如果你没有定义任何构造函数的话,那么C#编译器会自动生成一个无参的public构造函数。
 - 但是如果你定义了构造函数,那么这个无参的构造函数就不会被生成了
 
构造函数和字段的初始化顺序
- 字段的初始化发生在构造函数执行之前
 - 字段按照声明的先后顺序进行初始化
 
非public的构造函数
- 构造函数可以不是public的
 
Deconstructor(C#7)
- C#7 引入了deconstructor 模式
 - 作用基本和构造函数相反,它会把字段反赋给一堆变量
 - 方法名必须是Deconstruct, 有一个或多个out参数
 - Deconstructor可以被重载
 - Deconstruct这个方法可以是扩展方法
 














