常量(constant)
- 是一个特殊的符号,它有一个从不变化的值。
- 定义常量符号时,它的值必须能在编译时确定。确定之后,编译器将常量的值保存在程序集的元数据中。
- 常量的定义必须用基元类型,在c#中,Boolean 、Char、Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、Single、Double、Decimal和String。C#也允许定义一个非基元类型的常量变量,前提是常量变量的值设定为null
- 常量被看作是类型定义的一部分,可以看作是静态类型
- 运行时不需要为常量分配内存,不能获取常量的地址,也不能以传引用的方式传递常量
字段(field)
字段是一种数据成员,其中容纳了一个值类型的实例或者对一个引用类型的引用
字段修饰符
CLR术语 | C# 术语 | 说明 |
Static | static | 这种字段是类型状态的一部分,而不是对象状态的一部分 |
Instance | 默认 | 这种字段与类型的一个实例关联,而不是与类型本身关联 |
InitOnly | readonly | 这种字段只能由一个构造器方法中的代码写入 |
Volatile | volatile |
看到访问这种字段的代码,编译器、CLR或硬件就不会执行一些“线程不安全” 的优化措施。只有以下类型才能标记为volatile:所有的引用类型,Single、 Boolean、Byte、SByte、Int16、UInt16、Int32、UInt32、Char,以及 基础类型为Byte、SByte、Int16、UInt16、Int32或UInt32 的所有枚举类型 |
CLR支持类型(静态)字段和实例(非静态)字段。
- 类型字段,用于容纳字段数据的动态内存是在类型对象中分配的。
- 实例字段,用于容纳字段数据的动态内存是在构造类型的一个实例时分配的。
readonly字段
readonly 字段只能在一个构造器方法中写入。