编译时常量与运行时常量

C#中const与static readonly的区别

  最近了解了一下这两个常量的区别,网上介绍的很多,说的多是const 与 readonly的区别,其中的区别就不多说了,自己打开VS验证一下这其中的区别。

  一开始没注意 readonly 前的 static 这个关键字。开始也想验证的是 const 和 readonly,这个应该无关大雅。在调用常量过程中发现不对劲了,const定义的常量是需要类名调用的,readonly则是需要new一个对象调用,这明显调用方式都不一样了,这样对比这两个关键字就不平等了。其实这样的问题应该看到就能发现了,也是我对const这个关键字不熟悉,才到了验证时才发现。

  要对比的话,确切的说应该是  static readonly 与 const 的区别,这样两个都是用类名调用常量,这才能公平竞争。实现的效果也正如网上其他帖子所说的一样。调用const常量,编译时就会将常量的值赋予调用方,调用 static readonly常量则是获取该变量,运行时,才会将值传给调用方。这样就导致不同的程序集如果有调用到const的常量,就需要重新编译才能获取正确的值了,否在获取的还是原来的值。

  一个对比的小细节,记录一下

转载于:https://www.cnblogs.com/blacktusz/p/8493510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值