C# const 和 static readonly的区别
修饰符 | 可修饰的变量 | 初始化位置 | 不变性 | 生命周期 |
Const | 基本类型 | 声明的时候初始化 | 编译时常量 | 编译器存入变量metadata中,使用时不需要加载到ram |
static readonly | 不限 | 声明+构造器 | 运行时常量,仅仅是变量持有的引用不可变,不限制引用类型成员的修改 | 初次构造后确定 |
注意点:
由于const变量的值在编译期间就已经将其存入metadata中, 程序中使用常量其实已经直接将其替换成常量值了(可以通过 IL 查看),所以在 client-> lib这样引用关系的应用中,如果要修改存在于lib中的常量,单单重新编译发布 lib是不会对 client起作用的, 需要重发 client。
由于const变量的值在编译期间就已经将其存入metadata中, 程序中使用常量其实已经直接将其替换成常量值了(可以通过 IL 查看),所以在 client-> lib这样引用关系的应用中,如果要修改存在于lib中的常量,单单重新编译发布 lib是不会对 client起作用的, 需要重发 client。
![](https://files-cdn.cnblogs.com/files/jiangyan219/Alipay.bmp)
您的资助是我最大的动力!
金额随意,欢迎来赏!
![](https://files-cdn.cnblogs.com/files/jiangyan219/WeChat.bmp)
我写的东西能让你能懂,那是义务
毕竟占用了你生命中的宝贵的时间和注意力
要是你还能喜欢我的作品,那就是缘分了
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【青青子衿】!