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

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

  • 相关阅读:
    python函数
    python数据类型补充,copy知识点及文件的操作
    python数据类型
    python介绍
    Linux基础2-2 基础文件管理命令
    Linux基础2-1 根文件系统分析
    Linux基础1-3 命令使用帮助的获取
    Linux基础1-2 ls、cd、date、clock、cal、echo、printf命令使用简介
    Linux基础1-1
    fastDFS环境搭建
  • 原文地址:https://www.cnblogs.com/La5DotNet/p/2545477.html
Copyright © 2011-2022 走看看