一、C#图解教程第六章--深入理解类
一、类成员
二、类的成员修饰符的顺序
[特性] [修饰符] 核心声明
多个修饰符和特性顺序任意
三、类的实例成员
类的每个实例都拥有各个类成员的副本,改变一个类实例成员后不影响其他的类的实例成员
四、静态字段
静态字段被所有的实例共享,所有类的实例都可以访问静态字段,内存位置唯一。
扩展:
静态成员和实例成员:
静态成员:静态属性 静态字段 静态方法
静态类中只能有静态成员,不能有实例成员
非静态类中既可以有静态成员也可以有非静态成员
可以用类名直接去调用静态成员
静态成员和实例成员的区别:
静态成员需要通过static修饰,非静态成员不需要通过static修饰;
静态成员属于类,可以直接通过“类名.静态成员”的方式访问;
非静态成员,必须实例化对象后,通过对象.实例成员来访问;
当类第一次加载的时候(第一次被加载到内存的时候),该类下的所有的静态成员都会被加载,静态成员只创建一次。
实例成员有多少个对象,就会创建多少个对象;
静态成员会被加载到静态存储区,直到程序退出时才会被释放;
实例成员和静态成员的生命周期:
(1) 实例成员在实例创建后产生,实例销毁后实例成员不存在
(2)静态成员没有类的实例也存在,静态成员在第一次被调用时初始化。
静态成员函数:
(1) 没有实例依然可以调用静态方法
(2)静态成员不能访问实例成员,可以访问其他静态成员
其他静态成员类型:
成员常量
(1)声明在类声明中,值在编译时可计算
(2)不能在声明后再赋值
(3)具备静态量的表现,但在程序运行时不分配内存,在编译时被编译器替换掉。
属性
属性属于函数成员,不为数据分配内存,可执行代码
在为字段修改逻辑时访问字段的其他程序都需要修改,如果使用属性则只需要修改属性即可,使用属性的代码不需要重新编译。
实例构造函数
实例构造函数可以设置为Public,允许从外部调用构造函数,如果设置为private则只可以在类的内部调用构造函数。
静态构造函数
析构函数
在执行类的实例被销毁之前的非托管资源的行为。
this关键字的作用:
(1) 用于区分类的成员和本地变量和参数
(2)作为调用方法的实参
this在C#中的用法:
(1) this作为当前实例的对象
(2)串联构造函数(先执行无参数的构造函数,后执行有参数的构造函数)
(3)为原始类扩展方法
(4)索引器
索引器:
(1)索引器和属性一样,都不需要分配内存来存储
(2)索引器和属性一样都是用来访问数据成员,属性表示单独的数据成员,索引器表示多个数据成员。
索引器重载:
索引器有不同的参数列表
访问器级别:
分部类和分部类型
partical可以用在class struct(局部结构)和interfer(局部接口)中
分部方法:
注意:
返回类型必须是Void