[From 7.1~7.2] 常量和字段

/----------------------------7.1常量------------------------------------------/
常量是值从不变化的符号。定义常量符号时,它的值必须能在编译时确定。确定后,编译器将常量值保存到程序元数据中。这意味着只能定义编译器识别的基元类型的常量。在C#中,以下基元类型,可用于定义常量:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,UInt64,Single,Double,Decimal和String。然而,C#也允许非基元类型的常量变量,前提是把值设为null
 
常量总是被是为静态成员(C#不允许常量指定static关键字,因为常量总是隐式为static)
注:若要改变常量程序集则必须重新编译。
 
/----------------------------7.2 字段-----------------------------------------/
类型字段(静态字段)和实例字段(非静态字段)的内存分配时机
 
类型字段(静态字段):如果是类型字段,容纳字段数据所需的动态内存是类型对象中分配的,而类型对象是再类型加载到一个AppDomain时创建的。那么,什么时候将类型加载到一个AppDomain中呢?这通常时再引用了该类型的任何方法首次进行JIT编译的时候
实例字段(非静态字段):容纳字段数据所需的动态内存是在构建类型的实例时分配的。
 
 
readonly:这种字段只能由一个构造器方法中的代码写入。不会被构造器以外的任何方法写入。注意,可利用反射来修改readonly字段。
 
C#允许使用内联初始化语法来初始化类的字段。但是C#实际是在构造器中对字段进行初始化的,字段的内联初始化只是一种语法上的简化。
例:
Class A
{
    public int value = 5;
}
posted @ 2018-12-28 14:25  Real陈麟  阅读(139)  评论(0编辑  收藏  举报