const 的概念就是一个包含不能修改的值的变量。

常数表达式是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。

readonly 允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。
因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。

readonly 关键字与 const 关键字不同。

1. const 字段只能在该字段的声明中初始化。
readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
2. const 字段是编译时常数,而 readonly 字段可用于运行时常数。
3. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
4.const 对于引用类型的常数,可能的值只能是 string 和 null。
readonly可以是任何类型

总结
const只能在初期就使用常量初始化好。对于每一次编译后的结果,const的值是固定的,而readonly的值是可以在运行的时候才确定值的~~

涛哥理解:
const必须在初始化的时候赋值,而readonly可以在程序运行中赋值

转载于:https://www.cnblogs.com/duanjt/p/5319978.html

C# 中const和readonly的区别相关推荐

  1. C#中const和readonly的区别

    C#引入了readonly修饰符来表示只读域,const来表示不变常量.顾名思义对只读域不能进行写操作,不变常量不能被修改,这两者到底有什么区别呢?只读域只能在初始化--声明初始化或构造器初始化--的 ...

  2. C#中const和readonly有什么区别?

    C#中const和readonly什么区别? 您什么时候可以使用另一个? #1楼 常量成员是在编译时定义的,不能在运行时更改. 使用const关键字将const声明为字段,并且必须在声明const对其 ...

  3. 请叙const与readonly的区别

    请叙const与readonly的区别 a. const 关键字用于修改字段或局部变量的声明.它指定字段或局部变量的值不能被修改.常数声明引入给定类型的一个或多个常数. const 数据成员的声明式必 ...

  4. uniapp 获取到js文件var一个变量怎么获取到这个变量值_浅析Js中const,let,var的区别及作用域...

    理解:let变量的作用域只能在当前函数中 js中const,let,var的区别及作用域_lianzhang861的博客-CSDN博客​blog.csdn.net 全局作用域中,用 const 和 l ...

  5. c#中const与readonly区别

    const表示常量,定义的时候就要初始化:readonly表示只读,定义的时候可以不初始化,可以延迟到构造方法中进行初始化. 以下转载的两篇文章写的很好. 转载 追梦赤子心 的文章:C#基础知识七之c ...

  6. (转)c#中const与readonly区别

    const 的概念就是一个包含不能修改的值的变量. 常数表达式是在编译时可被完全计算的表达式.因此不能从一个变量中提取的值来初始化常量. 如果 const int a = b+1;b是一个变量,显然不 ...

  7. const和readonly内部区别

    const和readonly关键字也是面试中经常考到的问题,通常都是用来表示一个不可变的变量成员,那么具体区别是什么?从用法上说,const只能以inline代码的形式定义,而readonly既可以以 ...

  8. C++ 中 const和define的区别

    来源网址:http://wujiangping.blog.163.com/blog/static/195182011201255115125205/ 请区别用#define命令定义的符号常量和用con ...

  9. C#:const 和readonly的区别

    const字段只能在该字段的声明中初始化:readonly字段可以在声明或者构造函数中初始化.因此,根据所使用的构造函数,readonly字段可能具有不同的值 const字段为编译时常数:readon ...

最新文章

  1. 2020 年最具潜力的 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(附链接)...
  2. 一文详解最近异常火热的self-supervised learning
  3. 如何利用线框图展示初期产品
  4. POJ 1655 Balancing Act (树的重心)
  5. 在matlab中输出、读取多个文件
  6. 菜单 java_java 菜单
  7. 从零开始学前端:定位 --- 今天你学习了吗?(CSS:Day17)
  8. 【金融申请评分卡】数据准备 - 缺失值数据清洗
  9. 小括号教学设计导入_丁文丽《含有小括号的混合运算》教学设计
  10. DispatchAction和MappingDispatchAction区别
  11. arcgis中python计算面积的表达式_ArcGIS字段计算器中的python函数
  12. html中td是什么模块,html td什么意思
  13. Learn to say “fuck you” to the world every once in a while
  14. 大数据工程师修炼笔记
  15. UID_PS_01_大师之路
  16. 免费的python教程资源(中文,英文都有)
  17. js监听html页面大小变化,JS监听窗口变化实时获取浏览器窗口大小
  18. BUUCTF:秘密文件
  19. 基于JavaSwing坦克大战游戏的设计和实现
  20. 评分卡模型建模详细步骤-评分卡建模实例之scorecardpy

热门文章

  1. [原创]VS2008 英文版转为中文版之小记
  2. 发展是硬道理 高可用从双机热备走向容灾复制集群
  3. 改变人生的32句励志名言
  4. 技巧:利用 Python 实现多任务进程
  5. 霍山职业学校16届计算机学生,霍山职高(安徽霍山职业学校)
  6. vscode 无法跳转到函数定义_玩转VS Code
  7. 使用zerotier让异地设备组局域网
  8. Python中非常有用的三个数据科学库
  9. linux下i2c设备驱动程序,Linux I2C 设备驱动
  10. 关于数据表中插入数据报错(pymysql.err.IntegrityError) (1062, “Duplicate entry ‘0112‘ for key ‘‘teacher.PRIMARY‘“)