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灵活。

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

  • 相关阅读:
    Django基础(三)
    Python--时间模块.s(基本操作)
    Python--Pandas.1(Series的概念和创建,索引和切片,常用的基本操作)
    Python--Numpy.s(numpy的创建,通用函数,索引和切片,随机数,数据存读)
    主键约束 primary key
    not null 非空约束
    unique key 唯一约束
    表约束
    mysql操作
    python学习笔记
  • 原文地址:https://www.cnblogs.com/Elijah/p/2403269.html
Copyright © 2011-2022 走看看