核心归纳


常量:代码文件中的数据字段

① 常量是个占位符,不占用内存。
想象:有两段代码用同一个常量A(A=5)的情况
编辑:——-A——–A———(线假设为方法)
编译:——-5——–5———
编译和运行的时候,已经没有常量,没有A的概念,被常量的值所替代。那这样A的值就一直存在于代码文件中,存在于硬盘中。

② 因为一直存在,所以static的,又因为即使程序没有运行这个常量的值仍存在,这比static还static;但根据编译器的习惯,不能主动添加static修饰(接口中成员是public的,但不允许主动添加)


常量本质验证

因为是存在硬盘中,不需要动态分配内存,所以可以将纯常量的dll删除也不影响程序的正常
做下面一个实验:

删除程序集:No.7-ConstString.dll

删除程序集:No.7-NormalString.dll

字段

① volatile修饰符

编译器会优化内码,运行时会出现从缓存取数据的情况。在多线程的情况下,这样会造成取到的数据不是真实的,volatile修饰是禁止编译器优化这一点,从内存中取

② readonly修饰符

readonly是个伪君子。说只能在构造中赋值;但反射也可以赋值,如果有什么办法可以再次侵入构造,那也可以赋值了
readonly是个伪君子。说赋值后只能read,但是引用类型引用的对象无此限制

readonly也是C#翻译过来的关键字,个人感觉CLR中的InitOnly更贴切


《CLR via C#》读书笔记---07 常量和字段相关推荐

  1. CLR Via CSharp读书笔记(7):常量和字段

    {TODO:} 转载于:https://www.cnblogs.com/thlzhf/archive/2012/12/06/2805424.html

  2. CLR Via CSharp读书笔记(14):字符、字符串和文本处理

    数字类型与字符相互转换的三种技术: Casting: 最优效率,因为编译器产生IL指令来执行转换.C#允许开发者指明checked或unchecked代码以执行转换. 使用System.Convert ...

  3. CLR via C# 读书笔记 1-2 创建线程的成本

    在clr中创建线程的代价还是比较高的 ,他需要两个部分 内存: 线程核心对象, 存放描述线程的一些内容和上下文 . (内存消耗:700B-2500B) 线程环境,存放例如异常处理链之类. (内存消耗 ...

  4. CLR Via CSharp读书笔记(26) - 计算限制的异步操作

    执行上下文: 执行上下文包括安全设置(压缩栈.Thread的Principal属性和Windows身份), 宿主设置(System.Threading.HostExecutionContextMana ...

  5. 8086键盘输入实验——《x86汇编语言:从实模式到保护模式》读书笔记07

    1.BIOS中断 我们可以为所有中断类型自定义中断处理过程,包括内部中断.硬件中断和软中断. BIOS中断,又称BIOS功能调用,主要是为了方便地使用最基本的硬件访问功能.通常,为了区分针对同一硬件的 ...

  6. CLR Via CSharp读书笔记(29) - 混合线程同步构造

    {TODO:} 转载于:https://www.cnblogs.com/thlzhf/p/3494561.html

  7. CLR via C# 读书笔记 5-5 预留大内存

    在进行需要很大内存空间的计算时,非常容易发生OutOfMemoryException System.Runtime.MemoryFailPoint提供了在运行需要大内存的计算前进行内存检查的功能 在调 ...

  8. 带着问题读CLR via C#(六)常量与字段

    Q1: const和readonly的区别是什么? A1: const: const用来声明常量.1)它的值必须在编译时确定:2)编译器将常量的值保存在程序集的元数据中:3)常量的值直接嵌入代码,运行 ...

  9. 【读书笔记】.NET本质论第四章-Programming with Type(Part Two)

    欢迎阅读本系列其他文章: [读书笔记].NET本质论第一章 The CLR as a Better COM [读书笔记].NET本质论第二章-Components(Part One) [读书笔记].N ...

最新文章

  1. STM32开发 -- 系统架构
  2. React Native开发学习笔记——常用命令
  3. 数据挖掘——相似文章推荐
  4. java中Map ListE的用法
  5. 3-7:类与对象下篇——static成员
  6. NET平台4.0 发布网站流程及出错总结
  7. 发一个多CPU中进程与CPU绑定的例子
  8. wordpress js 运行短代码_7个WordPress常用代码段(Code Snippets)
  9. angularjs 指令详解
  10. 第8章 多项式回归与模型泛化 学习笔记上
  11. js前端之浅拷贝与深拷贝
  12. 昆仑通态触摸屏如何把参数由触摸屏传递到PLC_深圳PLC自动化培训哪家比较好
  13. 小米出品的最干净的APP,浏览器界的一股“清流”!
  14. 刚刚,华为发布白皮书,重新定义智慧园区!
  15. 网站服务器的宽带是1mb是什么意思,1mb/s网速是什么意思
  16. 小白都能学会的Python基础 第一讲:Python初了解
  17. cmd 下登陆ftp及相关操作
  18. Linux tar(打包,解打包)命令
  19. 虚拟机VMware 安装centos、常规配置、共享文件等
  20. labelme设置生成label_viz.png中的图例大小

热门文章

  1. 一些值得细细品味的书籍
  2. Flask Web开发-1.2模板及网页设计基础
  3. 计算机为什么能做翻译,为什么计算机能翻译
  4. 现代软件工程讲义 7 用户界面和用户体验
  5. ThumbnailUtils.extractThumbnail Android图片缩略图显示总结及比较
  6. 计算机U盘那种好,什么牌子的u盘好用耐用?u盘质量排行榜前十
  7. u盘推荐知乎_有哪些使用方便的高速u盘,求推荐?
  8. shell编程经典案例,建议收藏
  9. originos和HarmonyOS,OS系统最新资讯
  10. redis redisson 分布式锁 WRONGTYPE Operation against a key holding the wrong kind of value