一、成员修饰符顺序
类成员声明语句由:核心声明+一组可选的修饰符+一组可选的特性
【特性】【修饰符】TypeName FieldName;
二、实例字段和静态字段
声明格式:
实例字段:TypeName FieldName;静态字段:static TypeName FieldName;
作用范围:
实例字段:类的每个实例独享一份;静态字段:类的所有实例共享一份。
调用方式:
实例字段:外部访问使用对象名;静态字段:外部访问使用类名。
生命周期:
实例字段跟随类的实例的创建与销毁;静态成员即使没有类的实例也存在。
实例方法和静态方法访问:
实例方法可以访问静态字段;静态方法不能访问实例字段;
三、静态成员类型
可以声明为静态成员类型的成员使用✔️做了标记。
四、成员常量
成员常量是在类中方法外。(本地常量声明在方法中)。
使用const关键字
必须初始化,用于初始化成员常量的值在编译时必须是可计算的
成员常量初始化后不允许修改
成员常量表现像静态值,但没有实际的存储位置。成员常量对类的每个实例都是可见的,且即使没有类的实例也可使用
五、构造函数
实例构造函数
实例构造函数在创建每个类的新实例时执行。
构造函数名称和类名相同
构造函数不能有返回值
构造函数用于初始化实例的状态
创建类的实例,使用new关键字+构造函数
带参数的构造函数
构造函数可以带参数。参数的语法和其他方法完全相同。
构造函数可以被重载。
默认构造函数
如果在类的声明中没有显式地提供实例构造函数,那么编译器会提供一个隐式的默认构造函数。
默认构造函数没有参数
方法体为空
静态构造函数
静态构造函数在创建任何类的实例,和引用任何静态成员之前,初始化类级别的项。
静态构造函数和实例构造函数的区别
静态构造函数声明中使用static关键字
类只能有一个静态构造函数,且不能带参数
静态构造函数不能有访问修饰符
不能从程序中显式调用静态构造函数,系统会自动调用
析构函数
执行在类的实例被销毁之前需要的清理或非托管资源的行为。
readonly修饰符
字段可以用readonly修饰符声明,其作用类似于将字段声明为const,一旦值被设定就不能改变。
const只能在字段的声明语句中初始化,而readonly可以在下列任意位置设置它的值:
字段声明语句
类的任何构造函数。如果是static字段,初始化必须在静态构造函数中完成
const的值必须在编译时决定,而readonly的值可以在运行时决定,更加灵活
const的行为总是静态的,而readonly字段以下两点是正确的
它可以是实例字段,也可以是静态字段
它在内存中有存储位置
(注:本章学习总结自《C#图解教程》)