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能否互换了,

  • 相关阅读:
    深入MySQL(一):MySQL的组织架构
    使用graalvm nativeimage 快速暴露jar 代码为native 共享库
    SQL注入__布尔盲注和时间盲注 菜鸟
    linux网络配置,无法解析或者打开软件包列表
    django入门视图
    三.面试题
    select,poll,epoll的区别以及使用方法
    Linux从入门到入坑
    品味Spring Cache设计之美
    JAVA_基础篇(1)_JDK 8 的下载、安装与配置
  • 原文地址:https://www.cnblogs.com/zhangyu0217----/p/6734581.html
Copyright © 2011-2022 走看看