在多数情况下可以混用。
二者本质的区别在于,牵扯到本质 就要区分静态 和动态常量:
静态常量(compile-time constants):静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值
动态常量(runtime constants):动态常量的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。
这两者具有不同的特性,错误的使用不仅会损失效率,而且还会造成错误。
const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值,因此他符合静态常量。
而 readonly是在运行时计算出其值的,他修饰的常量会延迟到运行的时候
所以还可以通过静态构造函数来赋值。
1
2
|
const int num = 10; //这里 main方法首次启动时就给num确定值了 static readonly int num =10; //而用readonly时需要程序走到这地各方的时候 才会赋固定值<br><br><br>//,const修饰的常量在编译期间便已将num的字面值算出来了,而static readonly修饰的常量则未解析 |
static readonly
此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。
明白了这个本质区别,我们就知道语句中static readonly和const能否互换了
下载说明
☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,
☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!
☉唯一站长QQ:1004003180 [人格担保-本站注重诚信!]
☉购买建议E-mail:1004003180@qq.com 源码收购 E-mail:1004003180@qq.com
☉本站文件解压密码 【文章内都自带解压密码,每个密码不同!】