码迷,mamicode.com
首页 > 其他好文 > 详细

我所理解的readonly和const

时间:2015-05-24 21:42:55      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

      最近要给学校软件小组新成员讲几次课,所以把很多以前懒得学习的和模糊不清的知识点,重新学习了一下。

MSDN是这样解释的:

readonly 关键字与 const 关键字不同。 const 字段只能在该字段的声明中初始化。 readonly 字段可以在声明或构造函数中初始化。 因此,根据所使用的构造函数,readonly 字段可能具有不同的值。 另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数.

    什么是编译时常数,什么是运行时常数呢。我想做下面的实验,关于readonly和const你会理解的更好

在项目外新建个类库,类库中的一个TestClass类定义一个const字段和一个readonly字段

     public const int ParamOne=100;

     public static readonly int ParamTwo=100; 

 

在控制台项目调用并输出两个值,预期效果当然是100,100;

 

下面所做的将会帮助你理解const和readonly的区别所在。

 

修改类库中的ParamOne=50;ParamTwo=50;

 

不要重新生成整个项目,仅重新生成类库,bin目录下找到dll文件,复制到控制台bin目录下(目的是不重新编译生成控制台的项目)

 

双击控制台的exe文件,接下来会发生什么?

 

输出的值是100和50;

 

也就是说  const的值没有改变,但是readonly的值改变了。  

 

原因是什么呢?

 

const的值是保存到元数据,直接嵌入代码,而readonly的值,则是运行时赋值。

 

我所理解的readonly和const

标签:

原文地址:http://www.cnblogs.com/tdws/p/4526328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!