首页 新闻 会员 周边

C# readonly与const的区别

0
[已解决问题] 解决于 2013-01-29 10:36

readonly与const在使用与编译的时候到底有什么区别.?

还是根本就没有区别.? 

求高手解答!!!

C#
只会造轮子的主页 只会造轮子 | 老鸟四级 | 园豆:2274
提问于:2013-01-28 17:38
< >
分享
最佳答案
1

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个建议中有这个详细的比较

奖励园豆:5
chenping2008 | 大侠五级 |园豆:9836 | 2013-01-28 18:10

感谢您的回复

只会造轮子 | 园豆:2274 (老鸟四级) | 2013-01-29 10:36
其他回答(4)
-1

要理解static 及实例对象的生命周期

const 是Static,如果理解Static,就知道一般的静态变量是 编译时就确定了,Const不但是static,而且不能改动。

readonly是一个 实例的字段,是相对这一个实例对象(所以是运行时)的,在这个实例对象的生命周期中不能改。

Qlin | 园豆:2403 (老鸟四级) | 2013-01-28 17:59
0

对于每一次编译后的结果,const的值是固定的,只能在初期使用常量初始化

readonly的值是可以在运行的时候才确定值的,也就是可以在声明或构造函数中初始化

Rich.T | 园豆:3440 (老鸟四级) | 2013-01-29 09:07
0

const 修饰的是常量

readonly 修饰的是只读变量

Launcher | 园豆:45045 (高人七级) | 2013-01-29 09:33
0

这一定是一道面试题

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-01-29 10:24

这还真不是面试题,我差不多能理解有什么却别,但是我想知道具体的定义是什么.

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2013-01-29 10:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册