《CLR.via.C#第三版》第二部分第8,9章节读书笔记(四)

时间:2022-09-27 16:52:24

三种类型的构造方法:

实例构造器(引用类型):实例构造器永远不能被继承(所以方法前没有修饰符);如果类的修饰符为static(sealed和abstract),编译器根本不会在类的定义中生成一个默认构造器。

重要认知:为了使代码“可验证”,类的实例构造器在访问从基类继承的任何字段之前,必须先调用基类的构造器。如果派生类的构造器没有显示调用一个基类构造器,C#编译器会自动生成对默认的基类构造器的调用。

在类中声明的字段,实际在编译器中是转换成构造器中的代码执行初始化。如果一个类中有3个字段,3个构造函数,那么编译器实际生成三次初始化3个字段的代码--每个构造器一次。

实例构造器(值类型):C#编译器不允许值类型定义无参构造器(有参的可以)。

类型构造器(静态构造函数):只能定义一个,没有参数,可以和普通构造函数共存,作用是设置类型实例的初始状态。它的调用由CLR负责。它只执行一次(多线程时)。

扩展方法:

C#扩展方法:允许定义一个静态方法,并用实例方法的语法来调用它。(只需在方法的第一个参数前加this关键字)

参数:

声明方法的参数类型时,应尽量指定最弱的类型,最好是接口而不是基类。(讲解了ref、out、params)

感悟:这本书讲解C#这门编程语言,都是从编译器,CLR的执行原理角度,非常深刻。这两章个人感觉没什么特别重要的内容,所以列出一些重要概念,熟知这些概念即可。