CLR via C# 字段

字段是一种数据成员,其中容纳了一个值类型的实例或者对一个引用类型的引用。

//--

CLR支持类型(静态)字段和实例(非静态)字段。如果是类型字段,容纳字段数据所需的动态内存是在类型对象中分配的,而类型对象是在类型加载到一个AppDomain时创建的。那么,什么时候将类型加载到一个AppDomain中呢?这通常是在引用了该类型的任何方法首次进行JIT编译的时候。如果是实例字段,容纳字段数据所需的动态内存是在构造类型的实例时分配的。

//--

由于字段存储在动态内存中,所以它们的值在运行时才能获取。字段还解决了常量存在的版本控制问题。此外,字段可以是任何数据类型,不想常量那样仅仅局限于编译器内置的基元类型。

//--

CLR支持readonly字段和read/write字段。大多数字段都是read/write字段,意味着在代码执行过程中,字段值可多次改变。但readonly字段只能在构造器方法中写入。(构造器方法只能调用一次,即对象首次创建时。)编译器和验证机制确保readonly字段不会被构造器以外的任何方法写入。注意,可利用反射来修改readonly字段。

//--

内联(inline)初始化是指在代码中直接赋值来初始化,而不是将对构造器的调用写出来。

C#允许使用这种简便的内联初始化语法来初始化类的常量、read/write字段和readonly字段。

C#实际是在构造器中对字段进行初始化的,字段的内联初始化只是一种语法上的简化。另外,在C#中初始化字段时,如果使用内联语法,而不是在构造器中赋值,有一些性能问题需要考虑。

//--

当某个字段是引用类型,并且该字段被标记为readonly时,不可改变的是引用,而非字段引用的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值