C# 中,const 表示常量,readonly 表示只读域

const 与 readonly 本质的区别是,const 是编译时常量readonly 是运行时常量

编译时常量,就是在编译时就需要确定的;而运行时常量是在运行时确定的。

  • const 效率略高于 readonly。
  • const 只用于数字和字符串;readonly 用于任何类型。
  • const 用于全局变量、局部变量或 class 的 field;readonly 只用于 class 的 field,比如函数中就不能用 readonly,这就示上述示例中 readonly 为什么要放在 class 中的原因了。相关阅读:谈谈 const 与 readonly 的赋值。
  • const 修饰的 class 的 field,为该类的所有实例共享;readonly 修饰的 class 的 field,为该类的某一个实例独享,除非我们加了 static。
  • 有些地方只能用 const。
  • 有些地方只能用 readonly。
  • 确定的值用 const,比如圆周率,再比如设计的系统中用 1 表示 OK。
  • 不确定但要求不允许更改的值用 readonly,这取决于实际应用,比如用户管理系统中不允许更改工号,那么工号就可以考虑用 readonly,因为在编译的时候,无法确定是哪个员工的工号。


  • const 必须在声明时赋值,即必须初始化;而 readonly 在声明时不赋值也不报错。
  • const 一旦赋值在任何地方都不能再修改其值;而 readonly 可以在类构造函数中再次修改
    最后请记住:const 表示常量,readonly 表示只读域。

转载于:https://www.cnblogs.com/weiyuxinghuacun/archive/2011/03/04/1970864.html

const 与 readonle 的异同相关推荐

  1. const与#define的异同

    1  作为常量时的异同 (0)  相同 两者都可以用来定义常量: #define PI 3.14159 // 常量宏         const doulbe Pi=3.14159; // 常量 (1 ...

  2. 对比let、const、var的异同

    let.const和var的区别 var : 作用域是函数体的全部,声明变量提升 console.log(num);//undefinedvar num = 2 //循环内变量过度共享for (var ...

  3. 《深入理解ES6》笔记——块级作用域绑定(1)

    本章涉及3个知识点,var.let.const,现在让我们了解3个关键字的特性和使用方法. var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方 ...

  4. 工作中常用到的ES6语法

    一.let和const 在JavaScript中咱们以前主要用关键var来定义变量,ES6之后,新增了定义变量的两个关键字,分别是let和const. 对于变量来说,在ES5中var定义的变量会提升到 ...

  5. 程序员面试宝典(第二版)要点汇总

    第五章 P34,作用域符::,代表的是程序中的全局变量或者标准程序库的函数 P35,判断条件与(&.i++),其中当判断条件中前面的条件为0后面的条件就不用计算了,或也是如此 P36,编程风格 ...

  6. 5分钟掌握var,let和const异同

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/javascript-difference- ...

  7. Unix进程和线程管理及其异同

    Unix进程和线程管理及其异同 一,进程 1,什么是进程 在最初的单处理器系统中,系统中的多道程序按照一定规则切换而实现多任务处理,后来发现多个程序并发导致系统资源被共享,为了描述和管理程序对共享资源 ...

  8. Factory模式与Prototype模式的异同

    原型模式与工厂模式的定义,本文不想在这讲太多,本文主要想在这讲一下对原型模式的一些误解--将原型模式等价于工厂模式: 为什么会产生这种误导呢?其实也不是我们的错,关键在于设计模式这本书以及网上的其它资 ...

  9. C++ const与define

    昨日面试被组考官问及const与define异同,开始还简单,后来被问的我脑袋是一团浆糊.今日差点资料总结一下 1. const与define. 两者都可以用来定义常量,但是const定义时,定义了常 ...

最新文章

  1. 【Paper】41_[24]novel type of phase transition in a system of self-driven particles
  2. 由防止表单重复提交引发的一系列问题--servletRequest的复制、body值的获取
  3. Field XXXX input value is longer than screen field-BDC
  4. python教程:模块的作用与说明
  5. 关于遗留系统维护的讨论
  6. Word2013中怎样设置同一文档内粘贴选项
  7. [vue] vue部署上线前需要做哪些准备工作?
  8. 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美
  9. 超全的JS重新加载当前页面的几种方式
  10. Atitit 项目范围管理 目录 1. 应该包含下面过程:启动、范围计划、范围定义、范围核实及范围变更控制 1 1.1. 项目范围管理的五个过程 1 2. 启动过程 1 2.1. 项目章程(如质量、
  11. php嗅探视频地址,用PHP嗅探youku视频的真实地址!
  12. 将keras的模型封装成可转换为tensorlow的.pb格式,并生成.pbtxt文件
  13. 【坦白说】如何确定对方身份?
  14. 开发一个小程序商城需要多少钱?
  15. 小米5破解安装centos系统
  16. 西南石油大学计科院主页
  17. gnuplot 使用示例
  18. ANDROID XML图像资源文件详细讲解(一)
  19. 孵化中国网络安全未来,ISC 2021创新独角兽沙盒大赛开启招募
  20. Hexo-Theme-Sakura 实践记录

热门文章

  1. echo输出到stderr
  2. 如何让jQuery执行同步而不是异步的Ajax请求?
  3. java编程窗口在哪里下载_EeJava下载
  4. 风变编程python笔记_自学Python和风变编程
  5. AWT_Swing_图片Icon
  6. [Vue warn]: Duplicate keys detected: '0'. This may cause an update error. found in解决办法
  7. 四个数据欧几里得距离_从单词嵌入到文档距离 :WMD一种有效的文档分类方法...
  8. ubuntu安装mysql_如何在Ubuntu14.04中安装mysql
  9. python如何使用函数_python中函数使用
  10. Halcon 摄像机标定流程-代码实现