ReadOnly和Const之间的区别?
可能重复:
const和readonly有什么区别?
这些是可以互换的吗? 你能告诉我如何应用这两个代码吗?
不,他们不是。
const
字段是嵌入在程序集中的文字值。
只有原始值(字符串和数字)可以是const
,并且它们在编译时进行评估。
当你引用一个const
字段时,编译器嵌入该字段的字面值。 因此,如果使用另一个程序const
,而另一个程序集使用不同的值进行重新编译,则只有在您针对新版本重新编译时,程序集才会使用新值。
readonly
字段是一个正常的字段,不能在构造函数之外进行更改。
Const不能执行评估,而只能在初始化时使用。 (也就是说,你可以从配置文件中读取一个readonly变量的值,或者根据运行时已知的其他参数读取值,const只能设置为编译时已知的值)
任何类型的成员都可以readonly
。 它仅仅意味着在构建包含类之后,该成员不能被重新分配 ; 即,它不能用=
运算符设置为新对象。 像集合这样的可变类仍然可以针对其成员进行修改; 就是这样,如果你有一个readonly
成员是一个集合,那么它在构建之后就不能被分配到一个全新的集合。
const
与文字(如5
)没有太大的区别:它表示一个不变的值,因此在指定一个值 (而不是对象 )的上下文中才有意义。