字段

 

字段是一种数据成员,其中存放值类型的实例或者引用类型的引用,下表给出了可用于字段的修饰符。

CLR术语

C#术语

描述

Static

static

该字段是类型状态的一部分,而不是对象的状态的一部分

Instance

默认

该字段与类型的实例相关联,而不是与类型本身相关联

InitOnly

readonly

该字段只能由构造器方法包含的代码写入

Volatile

volatile

访问该字段的代码不受线程不安全(threadunsafe)优化的制约,而这种优化可能是由编译器、CLR或者硬件来执行的,只有下述类型可以标记为volatile:所有的引用类型,SignleBooleanByteSByteInt16 , UInt16 , Int32 , UInt32 , Char以及基本类型为ByteSByteInt16UInt16Int32或者UInt32的枚举类型。

    公共语言运行库(Common Language RuntimeCLR)同时支持类型(静态)字段和实例(非静态)字段。对于类型字段,存放字段数据所需的动态内存是在类型对象内部分配的,而动态内存是在类型加载到应用程序域(AppDomain)时创建的,也就是说在首次引用类型时才创建动态内存,也即JIT编译。对于实例字段,创建类型实例时才分配字段的动态内存。

    因为字段存储在动态内存中,所以只有在运行时才可以得到字段的值。字段同样可以解决常量存在的版本控制问题。另外,字段可以是任何数据类型,因此不必将字段限制为编译器内置的基元类型(常量在类型上存在限制)。

          CLR支持只读字段或者读/写字段。大多数字段是读/写字段,这意味着在执行代码过程中字段的值可能改变数次。但是,只读字段只能在构造器方法中写入数值(称之为一次写,即在对象首次创建时写入。需要注意的是,可以采用反射(reflection)来修改readonly字段。

posted on 2009-06-14 21:18  齐世昌  阅读(332)  评论(0编辑  收藏  举报