修饰符 | 可修饰的变量 | 初始化位置 | 不变性 | 生命周期 |
---|---|---|---|---|
constant | 基本类型 | 声明的时候初始化 | 编译时常量 | 编译器存入变量metadata中,使用时不需要加载到ram |
static readonly | 不限 | 声明+构造器 | 运行时常量,仅仅是变量持有的引用不可变,不限制引用类型成员的修改 | 初次构造后确定 |
注意点:
由于contant变量的值在编译期间就已经将其存入metadata中, 程序中使用常量其实已经直接将其替换成常量值了(可以通过 IL 查看),所以在 webapp -> library 这样引用关系的应用中,如果要修改存在于library中的常量,单单重新编译发布 library 是不会对 webapp 起作用的, 需要重发 webapp。
网友评论