这些可以互换吗?你能告诉我你如何应用这两个代码?
答案 0 :(得分:2)
不,他们不是。
const
字段是嵌入在程序集中的文字值
只有原始值(字符串和数字)可以是const
,并且它们在编译时进行评估
引用const
字段时,编译器会嵌入字段的文字值。因此,如果使用来自另一个程序集的const
,并且使用不同的值重新编译另一个程序集,则如果针对新版本重新编译它,程序集将仅使用新值。
readonly
字段是在构造函数外无法更改的普通字段。
答案 1 :(得分:2)
Const无法执行评估,而readonly可以在初始化时执行。 (即,您可以从配置文件或基于运行时已知的其他参数读取readonly变量的值,const只能设置为编译时已知的值)
答案 2 :(得分:0)
任何类型的成员都可以是readonly
。它只是意味着在构造包含类之后,成员不能重新分配;即,不能使用=
运算符将其设置为新对象。仍然可以针对他们的成员修改诸如集合之类的可变类;只是,如果你有一个readonly
成员是一个集合,它不能在构建后分配给一个全新的集合。
const
与文字(例如5
)没有什么不同:它代表一个不变的价值,因此在指定值的背景下才真正有意义(与对象相对)。