zoukankan      html  css  js  c++  java
  • [高效编程读书笔记]用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灵活。

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

  • 相关阅读:
    找出占用磁盘空间最大的前10个文件或文件夹
    把inline函数的定义放在头文件中
    判断是大端字节序还是小端字节序
    在source insight 中添加系统字体
    C++ inline 函数
    标准I/O函数库的三类缓冲
    内存分配失败错误处理
    P1765 手机
    P1321 单词覆盖还原
    P1308 [NOIP2011 普及组] 统计单词数
  • 原文地址:https://www.cnblogs.com/Elijah/p/2403269.html
Copyright © 2011-2022 走看看