关于C#:readonly和const之间的区别?


difference between ReadOnly and Const?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the difference between const and readonly?

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


const无法执行计算,而readonly可以在初始化时执行。(也就是说,您可以从配置文件中读取只读变量的值,或者基于运行时已知的其他参数,const只能设置为编译时已知的值)


不,他们没有。

const字段是嵌入在程序集中的文字值。只有基元值(字符串和数字)可以是const,并且在编译时对它们进行计算。当您引用const字段时,编译器将嵌入该字段的文字值。因此,如果使用来自另一个程序集的const,并且用不同的值重新编译另一个程序集,则只有在根据新版本重新编译新值时,程序集才会使用新值。

readonly字段是不能在构造函数外部更改的普通字段。


任何类型的成员都可以是readonly。它只意味着在构造包含类之后不能重新分配成员;即,不能使用=操作符将其设置为新对象。对于集合等可变类,仍然可以对其成员进行修改;只是,如果您有一个readonly成员是集合,则在构造后不能将其分配给一个全新的集合。

const与文字(如5不同):它代表一个不变的值,因此只在指定一个值(与对象相反)的上下文中才真正有意义。