• [高效编程读书笔记]用readonly而不是const


    开始写读书笔记,迈出从菜鸟到成熟的第一步!

    Readonly和Const在初值定下来之后都只读不可写。

    Readonly是“只读变量”,Const才是“真常量”。

    Const的值是在编译时内联到引用程序集当中,也就是写死了,如果程序集A引用了含有Const常量的程序集B,那么程序集A看到的Const常量就是一个固定的值,如果这个值变了,那么程序集B中的新值要重新编译一遍才能被A识别。而使用Readonly的话,值是运行时确定的,就是说程序集A在程序集B中动态获取了一把。

    比较:

     

    const

    static readonly

    readonly

    初始化的时机

    声明时

    声明时或构造函数

    声明时或构造函数

    值确定的时机

    编译时

    运行时

    运行时

    可定义的位置

    字段或函数内的局部常量

    只能定义为类中的字段常量

    只能定义为类中的字段常量

    初始化的位置

    类字段

    类字段或静态无参构造函数

    类字段或构造函数

    值存储的位置

    模块元数据

    托管堆

    托管堆

    可指定类型

    基本类型和string

    任意类型

    任意类型

    访问权限

    静态的,只能由类访问

    静态的,只能由类访问

    非静态的,可以由对象访问

    IL本质

    static   literal(静态字面的)

    static   initonly(静态只可初始化的)

    initonly(只可初始化的)

    注:如果在多处定义了只读变量的初始值,则以构造函数里的为准(运行时)。

    结论: Const高效,Static Readonly折中,Readonly灵活。

    引申:效率差得不多的情况下,选灵活的解决问题方式。

  • 相关阅读:
    PHP form 表单传参明细研究
    php返回数据库查询时出现Resource id #2
    AJAX避免服务器调用上个页面缓存的办法
    错误提示sudo: no tty present and no askpass program specified Sorry, try again.
    lua创建文件和文件夹
    ngx.lua中遇到的小问题2
    [Puzzle] 蚂蚁路线碰撞问题
    [问题记录] 操作符连写
    [工具] XMind
    Qt Creator快捷键
  • 原文地址:https://www.cnblogs.com/Elijah/p/2403269.html
Copyright © 2020-2023  润新知