const 和readonly的区别。。

changjun86 2006-04-18 11:31:09
const 和readonly的区别。。
...全文
250 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaury 2006-08-18
  • 打赏
  • 举报
回复
关注 本人也是初学..
zhxfzhxf1 2006-08-18
  • 打赏
  • 举报
回复
学习
effun 2006-08-18
  • 打赏
  • 举报
回复
const 是常量声明,在编译时编译器会直接把常数替换掉常量的使用,因此在运行时是不能修改其值的。
用readonly标识的字段仍旧是一个变量,只是这种类型的变量只能在声明时或者所属类的构造函数里进行赋值,之后就不允许修改了。
tantj 2006-08-18
  • 打赏
  • 举报
回复
这些基本概念一定要掌握好
guyes123 2006-08-18
  • 打赏
  • 举报
回复
MARK
changjun86 2006-08-18
  • 打赏
  • 举报
回复
哈哈
diandian82 2006-04-18
  • 打赏
  • 举报
回复
good
koskinen 2006-04-18
  • 打赏
  • 举报
回复
关注一下,顺便接分
singlepine 2006-04-18
  • 打赏
  • 举报
回复
const和readonly的联系和区别

1.const和readonly的值一旦初始化则都不再可以改写;
2.const只能在声明时初始化;readonly既可以在声明时初始化也可以在构造器中初始化;
3.const隐含static,不可以再写static const;readonly则不默认static,如需要可以写static readonly;
4.const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值);readonly则是运行期动态解析的常量;
5.const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员。
chengbo1983 2006-04-18
  • 打赏
  • 举报
回复
const编译时直接放入元数据中,要带来版本问题
readonly只能在构造函数中赋值

说白了,const就相当于把代码hard code进去,readonly需要动态加载
我面试的时候也有这道题
combread 2006-04-18
  • 打赏
  • 举报
回复
例子:
class Age
{
readonly int _year;
Age(int year)
{
_year = year;
}
void ChangeYear()
{
_year = 1967; // Will not compile.
}
}
combread 2006-04-18
  • 打赏
  • 举报
回复
我在现在公司面试的时候,这是一道题目阿,呵呵。

const是常量,只能在申明的时候赋值。
readonly能在构造函数中赋值,其他部分只读。
dayasky 2006-04-18
  • 打赏
  • 举报
回复
const是static的,虽然不许用static关键字,可是它就是static的
readonly可以声明为static或者不声明是static的

我觉得在使用的时候,它们的这个区别是最重要的
jiezhi 2006-04-18
  • 打赏
  • 举报
回复
const是在声明的时候就得赋予值,此后无论哪里都不能修改该值.
readonly声明时可以不赋予值,在构造函数中可以修改值,其它地方都不能修改值
cic_wxf 2006-04-18
  • 打赏
  • 举报
回复
const用于声明常量
readonly表示只读
iversonkai 2006-04-18
  • 打赏
  • 举报
回复
支持,这样的帖以后要常发啊
活靶子哥哥 2006-04-18
  • 打赏
  • 举报
回复
如果你在一个类库中使用了const
今后每更改该字段的值 编译后 引用该雷库的项目都要重新引用再编译
如果是readonly的则只需要更新该雷库的dll文件就可以了
shengjie3017 2006-04-18
  • 打赏
  • 举报
回复
好强的理论啊

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧