CLR via C# 边读边想 07 - 常量和字段
2012-06-30 23:27 richardzhaoxb 阅读(118) 评论(0) 收藏 举报Constants
如果定义了一个常量,那么在编译时,他的值必须确定下来。编译器是把常量的值存放在了 assembly 的 metadata 中。常量只能是原生类型:Boolean, Char, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64,UInt64, Single, Double, Decimal, and String.
由于常量从来不会变化,所以它们也被认为是类本身的(而不是实例对象的),换句话说,常量常被认为是静态成员,而不是实例成员。
Fields
下表列出了字段的修饰符:
尽量使用 static readonly 的组合,而不要用 const,如果 Assembly A 引用了 Assembly B 中的 const 常量 C, 那么C的实际值会被编译到 A 的 metadata 中,如果修改了B中的 常量C, A中也感知不到,除非重写编译A。如果使用static readonly 的组合就没有这个问题了。