读书笔记:const和readonly、static readonly 那些事

C#中表示不变的量(常量)的两种形式:const 和readonly

const 是静态常量

readonly 是动态常量

严格的来讲:const 应该称为常量 而readonly 则应称为只读变量。为什么这么说呢,继续往下看。

使用上的不一样

const 常量在声明时必须初始化

readonly、static readonly 在声明时可以不初始化

readonly 声明的常量通过以下两种方式进行初始化

声明时初始化,构造函数初始化(非静态构造函数)

static readonly 声明的常量通过以下两种方式进行初始化

声明初始化,静态构造函数初始化

const 可以声明字段常量和局部常量

readonly 不能在局部变量中使用

const常量编译后保存于模块的元数据中,无须在托管堆中分配内存

readonly 常量需要分配独立的存储空间

const常量只能是编译器能够识别的基元类型如Int,string,float,char 等

readonly 常量可以是任何类型

const可以定义字段和局部变量 readonly则只能定义字段

数组、结构体不能声明为const常量,因为两者是可变的

容易忽略的地方-const的可能问题

当项目中引用一个dll时,dll中的对象有const常量,但是当修改这个常量后重新编译这个dll,将这个dll覆盖旧的dll,运行exe,会出现const常量的值并未改变

这就是const常量引起的引用程序集不一致的问题

问题的原因就是因为 const 是编译时常量

相对来说, readonly 是运行时常量,所以 const高效,后者灵活,在实际运用中推荐用static readonly 代替const用以解决上述问题。

 

《你必须知道的.NET》读书笔记

转载于:https://www.cnblogs.com/MrALei/p/4365451.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值