第八章 常数与字段
Ø 8.1 常数
常数总被认为是类型的一部分。
定义常量符号时,它的值必须能在编译时确定,确定之后,编译器将常量的值保存到程序集的元数据中。这意味这只能为程序集所认定的基元类型定义常量。
运行时不需要为常量分配任何内存。
Ø 8.2 字段
字段是以动态内存的形式存储的,因此只能在运行时刻获取它们的值。
对于类型字段,用于容纳字段数据的动态内存是在类型对象中分配的,而类型对象是在类型加载到一个AppDomain时创建的。
只读字段只能在构造器内被赋值(定义时赋值实际上也就是在构造器内赋值),在构造器内只读字段可以被多次赋值。
很多字段都是以内联的方式进行初始化的(这里内联的意思即为在声明字段的同时进行初始化赋值)。C#允许我们采用这种方便的内联初始化语法来初始化一个类的常数,读写字段和只读字段。内联初始化仅仅是一种简化的表达方式,实际上它们的初始化是在构造器内完成的
当某个字段是引用类型,而且该字段标记为readonly时,那么不可改变的是引用,而非字段引用的对象。