ReadOnly和Const之间的区别?

时间:2010-06-17 20:45:47

标签: c#

  

可能重复:
  What is the difference between const and readonly?

这些可以互换吗?你能告诉我你如何应用这两个代码?

3 个答案:

答案 0 :(得分:2)

不,他们不是。

const字段是嵌入在程序集中的文字值 只有原始值(字符串和数字)可以是const,并且它们在编译时进行评估 引用const字段时,编译器会嵌入字段的文字值。因此,如果使用来自另一个程序集的const,并且使用不同的值重新编译另一个程序集,则如果针对新版本重新编译它,程序集将仅使用新值。


readonly字段是在构造函数外无法更改的普通字段。

答案 1 :(得分:2)

Const无法执行评估,而readonly可以在初始化时执行。 (即,您可以从配置文件或基于运行时已知的其他参数读取readonly变量的值,const只能设置为编译时已知的值)

答案 2 :(得分:0)

任何类型的成员都可以是readonly。它只是意味着在构造包含类之后,成员不能重新分配;即,不能使用=运算符将其设置为新对象。仍然可以针对他们的成员修改诸如集合之类的可变类;只是,如果你有一个readonly成员是一个集合,它不能在构建后分配给一个全新的集合。

const与文字(例如5)没有什么不同:它代表一个不变的价值,因此在指定的背景下才真正有意义(与对象相对)。