zoukankan      html  css  js  c++  java
  • 我所理解的readonly和const

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

    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的值,则是运行时赋值。

  • 相关阅读:
    <mySql完全手册>2011031401
    <海量数据库解决方案>2011030801
    检索
    <mySql完全手册>2011022401
    <自己动手写操作系统>2011031601
    数据结构和算法基础
    <海量数据库解决方案>2011031001
    <自己动手写操作系统>2011032101
    Delphi方法类型
    .NET下的Login机制
  • 原文地址:https://www.cnblogs.com/tdws/p/4526328.html
Copyright © 2011-2022 走看看