Q1: const和readonly的区别是什么?

A1: const: const用来声明常量。1)它的值必须在编译时确定;2)编译器将常量的值保存在程序集的元数据中;3)常量的值直接嵌入代码,运行时不需要为常量分配内存空间;4)长两宗被视为静态成员;5)用const声明的类型必须是基元类型; readonly: 用来声明只读字段。1)只读字段只能在一个构造函数中写入;2)可以用反射来修改readonly字段;3)当只读字段为引用类型,不可改变的是引用,并非字段引用的对象。

Q2: 静态字段和实例字段内存空间在什么时候分配?

A2: 静态字段的内存空间在类型对象中分配,类型对象是在类型加载到一个AppDomain时创建的,换言之,通常是在引用了该类型的任何方法首次进行JIT编译的时候;实例字段的内存空间在构造类型的一个实例时分配。

Q3: 字段修饰符有哪些?

A3: 1) static: 声明静态字段;2) readonly: 声明只读字段;3) volatile: 对于访问这种字段的代码,编译器、CLR或硬件不会执行一些“线程不安全”的优化措施,能标记为volatile的类型有所有引用类型,Single, Boolean, Byte, SByte, Int16, Int32, UInt16, UInt32, Char, 以及基础类型为 Byte, SByte, Int16, Int32, UInt16或UInt32的枚举类型。4) 默认为实例字段。

Q4: 以下代码中A,B,C,D四行代码哪一行是错的?

 1     class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             ReadonlyTest.testChars[0] = 'X';  // A
 6             ReadonlyTest.testChars[1] = 'Y';  // B
 7             ReadonlyTest.testChars[2] = 'Z';  // C
 8             ReadonlyTest.testChars = new char[] { 'X', 'Y', 'Z' };  // D
 9         }
10     }
11
12     class ReadonlyTest
13     {
14         public static readonly char[] testChars = new char[] { 'A', 'B', 'C' };
15     }

A4: D行错。A,B,C行修改的是testChars引用的对象,D修改的是testChars的引用。

转载于:https://www.cnblogs.com/Allen-Li/archive/2013/04/11/3015443.html

带着问题读CLR via C#(六)常量与字段相关推荐

  1. 跟小静读CLR via C#(06)- 构造器

    跟小静读CLR via C#(06)- 构造器 最近忙着看新还珠,好几天不学习了.玩物丧志啊,罪过罪过. 今天总结的是类构造器的知识,其实这方面的文章蛮多的,可还是觉得亲自写一下对自己的思考和认识会有 ...

  2. 图书速读:《第六病室》

    文章转自:图书速读:<第六病室> 关于作者 契诃夫是享誉世界的短篇小说大师,他的小说短小精悍,简练朴素,语言明快生动,极富于音乐节奏感,且寓意深刻. 关于本书 契诃夫一生创作了上千篇中短篇 ...

  3. 跟小静读CLR via C#(02)-基元类型、引用类型、值类型

    跟小静读CLR via C#(02)-基元类型.引用类型.值类型 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架类库FCL存在着直接的映 ...

  4. 跟小静读CLR via C#(05)- 访问限定、数据成员

    跟小静读CLR via C#(05)- 访问限定.数据成员 今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, over ...

  5. 零基础带你学习MySQL—修改表(六)

    零基础带你学习MySQL-修改表(六)

  6. 萌新卷妹带你逃出算法无名岛第六站

    萌新卷妹带你逃出算法无名岛第六站

  7. 跟小静读CLR via C#-开篇及目录

    最近正在拜读Jeffrey大师的.NET巨作-<CLR via C#>.好书就像一杯茶,需要静下心来慢慢品.在写笔记的过程中,也加入了自己的思考:在和园友们的交流中,理解也不断的加深. 目 ...

  8. 手把手带你撸一个校园APP(六):失物招领二手交易模块

    代码经过简单的整理,已经放到Github上了.https://github.com/zhengweichao/Hevttc 回首来看,代码质量一般,里面也有各种逻辑问题,还望各位看官海涵.接下来有时间 ...

  9. 带着问题读源码-soul(2021-01-16)

    ### 带着问题读源码系列之Dubbo插件 像往常一样启动 [soul-admin] 和 [soul-bootstrap] . 因为dubbo需要依赖zookeeper, 需要需要启动一个监听在 lo ...

最新文章

  1. 【洛谷P3846】【TJOI2007】—可爱的质数(BSGS模板)
  2. 四旋翼姿态解算——梯度下降法理论推导
  3. Redis 是怎么实现 “附近的人” 的?
  4. 【Tuxedo】Tuxedo入门
  5. MATLAB把多行多列矩阵数据和文字写入txt文件
  6. Android自定义实现FlowLayout
  7. 推荐系统相关资源汇总
  8. 分组框控件 1130
  9. NS-仿真实验--FTP
  10. CIA的海外间谍,要如何完美避开AI的监控?
  11. ubuntu18.04server 真机无法自动获取IP解决方法
  12. ZooKeeper学习第八期——ZooKeeper伸缩性
  13. EasyUI:导出datagrid数据到桌面
  14. SENT (Single Edge Nibble Transmission) 协议 接口
  15. INVT英威腾GD200A系列变频器使用PID实现恒压供水功能的相关参数设置及接线
  16. 怎么下载思维导图模板呢?
  17. 计算机留学美国ps,美国计算机专业ps范文
  18. android音乐搜索功能实现,撸个应用学Android——空灵音乐本地音乐版
  19. hctf-2018-Crypto-xorgame
  20. 移动App性能测试包含哪些内容?App性能测试工具有哪些?

热门文章

  1. CRUD-员工列表 大体流程
  2. Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
  3. Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
  4. 电磁场与电磁波第一章 矢量分析
  5. C#中的::运算符的作用
  6. matlab矩阵分解
  7. EqualizeHist函数
  8. 聚类之K-means均值聚类
  9. 计算机四级网络工程师考点速查,全国计算机等级考试标准教程:四级网络工程师...
  10. numpy.core.umath failed to import 如何解决