readonly,const及static的区别
一、readonly只读
1.依赖于对象==》》需要new对象,然后通过对象去访问
2.可以与static组合使用,此时用法与const用法相似但也有不同点(二者的内存分配过程不一样,static readonly在运行时分配内存,const在项目编译时直接写入内存)
3.支持任意的数据类型
4.声明时初始化
优劣势:速度较const较慢,但是灵活性较好
使用方式:new对象后调用
使用场景:不经常修改也不需要经常编译的环境,用于修饰某类或对象属性
二、const常量
1.依赖于类,不依赖于对象==》》直接类名.名称
2.不可与static一起使用,编译时直接记录值
3.仅支持基元类型(编译器直接支持的数据类型)和string(.Net字符串恒定性)
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, float, bool, decimal,string
4.声明时初始化。
优劣势:速度较readonly较高,但灵活性较差。修改时需要重新编译
使用方式:类名.名称
使用场景:常量的值将由整个类的所有实例对象共同分享(公共常量) 可用于配置或解决硬编码的问题
三、static静态
和前两者没有关系,请点击这里移步,写的很形象