常量
是一个包含不能修改的值的变量
用const修饰符声明的字段为常量,常量只能在声明中初始化,以后不能再修改
只读字段
允许把一个字段设置为常量,它只能在字段声明中或构造函数中重新赋值,不能在其他地方赋值。只读字段是实例字段,每个实例都可以有不同的值,如果想变成静态字段,需要显式声明。
用修饰符static声明的字段为静态字段。不管包含该静态字段的类生成多少个对象或根本无对象,该字段都只有一个实例,静态字段不能被撤销。必须采用如下方法引用静态字段:类名.静态字段名。
如果类中定义的字段不使用修饰符static,该字段为实例字段,每创建该类的一个对象,在对象内创建一个该字段实例,创建它的对象被撤销,该字段对象也被撤销,实例字段采用如下方法引用:实例名.实例字段名。
匿名类型
用var关键字定义隐式类型化的变量,用var和new关键字定义隐式类型类,该类继承于object类且无类名。
如果两个匿名类的成员相同,则两个匿名类型相同
结构
结构是值类型,由struct定义,存在构造函数与属性,定义方法与类相同。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
与类不同,结构的实例化可以不使用 new 运算符。
结构不支持继承。
struct Dime{
public double length;
public double width;
}
Dime point;
point.length = 2;
point.width = 2;
结构可以这样初始化,如果Dime是个类,便会有编译错误,因为point包含一个未初始化的引用。
当把结构当作参数传递时,应作为ref参数传递,此时只传递了结构的在内存中的地址,但是调用的方法会改变结构的值。
结构的继承链:
结构->System.ValueType->System.Object
部分类
可以将 struct class interface 放在多个文件中,使用时须在struct class interface前面加上partial。
各个部分必须有相同的可访问性,如Public private protected internal abstract sealed new 一般约束等等
在把部分类编译到类型时,属性,xml注释,接口,反省类型的参数属性和成员会合并。
静态类
如果该类只包含静态的方法或属性,则该类就是静态的。
关于静态方法与实例方法
(待补充)