CSharp Basic Tutorial Chapter-3-2 构造函数和解析函数


构造函数

  • 在class或struct上运行初始化代码
  • 和定义方法差不多,但构造函数的名和类型名一致,返回类型也和类型一致,并且返回类型就省略不写了
  • C#7,允许单语句的构造函数写成expression-bodied成员的形式

ctor1
ctor2

构造函数重载

  • class和struct可以重载构造函数
  • 调用重载构造函数时使用this
  • 当同一个类型下的构造函数A调用构造函数B的时候,B先执行
  • 可以把表达式传递给另一个构造函数,但表达式本身不能使用this引用,因为这时候对象还没有被初始化,所以对象上任何方法的调用都会失败。但是可以使用static方法

overridedemo1
overridedemo2
overridedemo3
因为这个时候还没有被初始化 所以不能用this
overridedemo4

无参构造函数

  • 对于class,如果你没有定义任何构造函数的话,那么C#编译器会自动生成一个无参的public构造函数。
  • 但是如果你定义了构造函数,那么这个无参的构造函数就不会被生成了

构造函数和字段的初始化顺序

  • 字段的初始化发生在构造函数执行之前
  • 字段按照声明的先后顺序进行初始化

非public的构造函数

  • 构造函数可以不是public的

publicctor
publicctor2

Deconstructor(C#7)

  • C#7 引入了deconstructor 模式
  • 作用基本和构造函数相反,它会把字段反赋给一堆变量
  • 方法名必须是Deconstruct, 有一个或多个out参数
  • Deconstructor可以被重载
  • Deconstruct这个方法可以是扩展方法

Deconstruct1
Deconstruct2
Deconstruct3
Deconstruct4
Deconstruct5
Deconstruct6
Deconstruct7


文章作者: Chaoqiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chaoqiang !
评论
 上一篇
CSharp Basic Tutorial Chapter-3-3 class 对象初始化 this 属性  索引器 CSharp Basic Tutorial Chapter-3-3 class 对象初始化 this 属性 索引器
对象初始化器对象任何可访问的字段/属性在构建之后,可通过对象初始化器直接为其进行设定值 编译器生成的代码 对象初始化器 vs 可选参数 如果不使用初始化器,上例中的构造函数也可以使用可选参数: 可选参数方式 优点:可以让Bunny类的
下一篇 
CSharp Basic Tutorial Chapter-3-1 字段方法 CSharp Basic Tutorial Chapter-3-1 字段方法
Main content of Chapter 3 Class最常见的一种引用类型 class YourClassName { //... } 字段 Field是class 或 Struct 的成员,它是一个变量 class Octop
  目录