• 读书笔记:const和readonly、static readonly 那些事


    C#中表示不变的量(常量)的两种形式:const 和readonly

    const 是静态常量

    readonly 是动态常量

    严格的来讲:const 应该称为常量 而readonly 则应称为只读变量。为什么这么说呢,继续往下看。

    使用上的不一样

    const 常量在声明时必须初始化

    readonly、static readonly 在声明时可以不初始化

    readonly 声明的常量通过以下两种方式进行初始化

    声明时初始化,构造函数初始化(非静态构造函数)

    static readonly 声明的常量通过以下两种方式进行初始化

    声明初始化,静态构造函数初始化

    const 可以声明字段常量和局部常量

    readonly 不能在局部变量中使用

    const常量编译后保存于模块的元数据中,无须在托管堆中分配内存

    readonly 常量需要分配独立的存储空间

    const常量只能是编译器能够识别的基元类型如Int,string,float,char 等

    readonly 常量可以是任何类型

    const可以定义字段和局部变量 readonly则只能定义字段

    数组、结构体不能声明为const常量,因为两者是可变的

    容易忽略的地方-const的可能问题

    当项目中引用一个dll时,dll中的对象有const常量,但是当修改这个常量后重新编译这个dll,将这个dll覆盖旧的dll,运行exe,会出现const常量的值并未改变

    这就是const常量引起的引用程序集不一致的问题

    问题的原因就是因为 const 是编译时常量

    相对来说, readonly 是运行时常量,所以 const高效,后者灵活,在实际运用中推荐用static readonly 代替const用以解决上述问题。

    《你必须知道的.NET》读书笔记

  • 相关阅读:
    clearfix
    css浮动
    css常识
    给数组排序方法2
    定时器
    数组
    redhat 7.6 iptables 配置
    redhat 7.6 流量监控命令、软件(3)nethogs 监控进程实时流量
    redhat 7.6 流量监控命令、软件(2) iftop 监控网络IP实时流量
    redhat 7.6 流量监控命令、软件(1) ethstatus
  • 原文地址:https://www.cnblogs.com/MrALei/p/4365451.html
Copyright © 2020-2023  润新知