readonly与const
a程序集中定义了一个const a= 21
b程序集中引用了a程序集,也用到了a程序集中的const, 其实这个时候是直接21过去的,而不是定义的变量,
比如 b=a,其实本质上是 b=21
而readonly 就不一样了,readonly a=21
在b程序集中 b=a,就是b=a;
如果用const ,这样a修改了22 ,没有编译b程序集,那么b任然为21
而readonly会传过去22
还有readonly可以在构造函数中 重新赋值一次,也只能是一次。
改善c#的50个建议中有这个详细的比较
感谢您的回复
要理解static 及实例对象的生命周期
const 是Static,如果理解Static,就知道一般的静态变量是 编译时就确定了,Const不但是static,而且不能改动。
readonly是一个 实例的字段,是相对这一个实例对象(所以是运行时)的,在这个实例对象的生命周期中不能改。
对于每一次编译后的结果,const的值是固定的,只能在初期使用常量初始化
readonly的值是可以在运行的时候才确定值的,也就是可以在声明或构造函数中初始化
const 修饰的是常量;
readonly 修饰的是只读变量;
这一定是一道面试题
这还真不是面试题,我差不多能理解有什么却别,但是我想知道具体的定义是什么.