** 第八章 ** ** 常数与字段 **
** 一、常数 **
1 、可被定义为常数的类型有:
2 基元类型: Boolean, Char, Byte, SByte, Decimal, Int16, Int32, UInt16, UInt32, Int64, UInt64, Single, Double
2 字符串: String
2 枚举类型
2 、常数在编译后直接嵌入 IL 代码中,因此一个模块中的常数不能在运行时被另一模块获取,前者对常数进行的修改无法被另一个模块在运行时感知,因此要想在运行时获取“不变数值”应该使用只读字段
** 二、字段 **
1 、字段(包括静态、实例或只读字段)均在运行时分配内存
2 、只读字段只能在构造器中被符值(也可在声明时被直接赋值,其他地方均不允许,实际上同于在构造器中赋值),静态只读字段在类型构造器中赋值,实例只读字段在实例构造器中被符值。
3 、静态只读字段只能使用类型名访问,而不能使用实例引用访问
三、静态只读字段和常数的区别:
1 、常数直接编译时刻嵌入 IL 代码,在运行时不可重新读取,静态只读字段则可以在运行时重新读取
2 、常数只能在声明处赋值,而静态只读字段则可在构造器中赋值