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