zoukankan      html  css  js  c++  java
  • readonly和const的区别

    const和static readonly的确很像:通过类名而不是对象名进行访问,都是将变量声明为只读,且在变量初始化后就不可改写,

    在多数情况下可以混用。

    二者本质的区别在于,牵扯到本质 就要区分静态 和动态常量:

    静态常量(compile-time constants):静态常量是指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值

    动态常量(runtime constants):动态常量的值则是在运行的那一刻才获得的,编译器编译期间将其标示为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。

    这两者具有不同的特性,错误的使用不仅会损失效率,而且还会造成错误。

    const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值,因此他符合静态常量。

    readonly是在运行时计算出其值的,他修饰的常量会延迟到运行的时候

    所以还可以通过静态构造函数来赋值

    const int num = 10;  //这里 main方法首次启动时就给num确定值了
    static readonly int num =10;   //而用readonly时需要程序走到这地各方的时候 才会赋固定值


    //,const修饰的常量在编译期间便已将num的字面值算出来了,而static readonly修饰的常量则未解析

    static  readonly

    此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。

    明白了这个本质区别,我们就知道语句中static readonly和const能否互换了,

  • 相关阅读:
    Python几种主流框架
    Python测试框架
    Python测试工具开发
    robotFramework——通用的自动化测试框架
    依赖数据库的单元测试——DBUnit
    SpringTest——Spring在Junit上进一步封装,集成的测试模块
    linux---网络配置
    linux-----初学命令和理解
    Liunx----vi编辑器
    虚拟机---网络设置
  • 原文地址:https://www.cnblogs.com/zhangyu0217----/p/6734581.html
Copyright © 2011-2022 走看看