readonly,const及static的区别

一、readonly只读

    1.依赖于对象==》》需要new对象,然后通过对象去访问

    2.可以与static组合使用,此时用法与const用法相似但也有不同点(二者的内存分配过程不一样,static readonly在运行时分配内存,const在项目编译时直接写入内存)

   3.支持任意的数据类型

   4.声明时初始化

   优劣势:速度较const较慢,但是灵活性较好

   使用方式:new对象后调用

   使用场景:不经常修改也不需要经常编译的环境,用于修饰某类或对象属性

readonly,const及static的区别

二、const常量

   1.依赖于类,不依赖于对象==》》直接类名.名称

   2.不可与static一起使用,编译时直接记录值

   3.仅支持基元类型(编译器直接支持的数据类型)和string(.Net字符串恒定性

      sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, float, bool, decimal,string

   4.声明时初始化。

   优劣势:速度较readonly较高,但灵活性较差。修改时需要重新编译

   使用方式:类名.名称

   使用场景:常量的值将由整个类的所有实例对象共同分享(公共常量)  可用于配置或解决硬编码的问题

readonly,const及static的区别

 

三、static静态

和前两者没有关系,请点击这里移步,写的很形象