首页/技术开发/内容

第9章 办法[《.net框架程序设计》读书笔记]

技术开发2024-01-08 阅读()
第九章 方法




一、 实例构造器

1、 前面提到用new操作符创建对象时的三部曲:

l 为对象分配内存

l 初始化对象的附加成员(方法表指针和SyncBlockIndex)

l 调用实例构造器初始化实例状态

在分配内存时,系统将所有内存位置均置为0值,这就是为什么字段初始化而未赋值时均为0或null值。



不调用实例构造器的情况:

l 调用Object.MemberwiseClone()方法创建实例(分配内存;初始化附加成员;将源对象字节拷贝到新创建的对象)

l 反序列化对象时

2、 为避免为实例字段产生过多的构造器代码,应避免在声明字段时为字段符初值,而是在无参构造器中为它们符初值,在其他重载的构造器中调用无参构造器。



3、 值类型实例构造器

l C#编译器不会自动调用其构造器,必须显式调用构造器才能起作用

l C#编译器不允许为值类型定义无参实例构造器(下面会介绍可以定义无参类型构造器)

l 不能为结构中的字段在声明的同时赋初值,可通过定义带参构造器的方式进行

l 必须在结构的构造器中为所有字段赋初值

二、 类型构造器

1、 类型构造器的一些限制:

l 不能带任何参数

l 类型构造器总为私有的,不能用其他访问修饰符

2、类型构造器被调用的时机:

l 第一个实例被创建,或者类型的第一个字段或成员第一次被访问之前

l 非继承静态字段被第一次访问之前

类型构造器在类型的生命周期中只被调用一次;

3、一些限制:

l 若类型构造器中抛出异常,则该类型变成不可访问,访问其中的任何字段或方法均会抛出System.TypeInitializationException异常

l 类型构造器只能访问类型的静态字段

l 类型构造器不应该调用基类型的类型构造器,因静态字段并非继承而是编译时静态绑定

三、 操作符重载

1、 操作符重载

C#中对操作符重载的一些限制:

l 必须声明为public static

l 必须有一个参数为操作符所属类型

l 不能改变操作符原始定义的引数个数

l 若定义了true操作符也必须同时定义false操作符,二者都必须返回bool值

l ++、--操作符必须返回其所隶属之类型的一个实例

l 可被重载的一元操作符:+、-、!、~、++、--、true、false

l 可被重载的二元操作符:+、-、*、/、%、!、^(异或)、<、>、<<、>>、==、!=、<=、>=

l 不允许被重载的操作符:&&、(北联网教程,专业提供视频软件下载)

第1页  第2页  第3页  第4页 

……

相关阅读