CLR via C# 边读边想 07 - 常量和字段

Constants

如果定义了一个常量,那么在编译时,他的值必须确定下来。编译器是把常量的值存放在了 assembly 的 metadata 中。常量只能是原生类型:Boolean, Char, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64,UInt64, Single, Double, Decimal, and String.

由于常量从来不会变化,所以它们也被认为是类本身的(而不是实例对象的),换句话说,常量常被认为是静态成员,而不是实例成员。

 

Fields

下表列出了字段的修饰符:

CLR via C# 边读边想 07 - 常量和字段_第1张图片

尽量使用 static readonly 的组合,而不要用 const,如果 Assembly A 引用了 Assembly B 中的 const 常量 C, 那么C的实际值会被编译到 A 的 metadata 中,如果修改了B中的 常量C, A中也感知不到,除非重写编译A。如果使用static readonly 的组合就没有这个问题了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/richardzhaoxb/archive/2012/06/30/2571480.html

你可能感兴趣的:(CLR via C# 边读边想 07 - 常量和字段)