带着问题读CLR via C#(六)常量与字段
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#(六)常量与字段相关推荐
- 跟小静读CLR via C#(06)- 构造器
跟小静读CLR via C#(06)- 构造器 最近忙着看新还珠,好几天不学习了.玩物丧志啊,罪过罪过. 今天总结的是类构造器的知识,其实这方面的文章蛮多的,可还是觉得亲自写一下对自己的思考和认识会有 ...
- 图书速读:《第六病室》
文章转自:图书速读:<第六病室> 关于作者 契诃夫是享誉世界的短篇小说大师,他的小说短小精悍,简练朴素,语言明快生动,极富于音乐节奏感,且寓意深刻. 关于本书 契诃夫一生创作了上千篇中短篇 ...
- 跟小静读CLR via C#(02)-基元类型、引用类型、值类型
跟小静读CLR via C#(02)-基元类型.引用类型.值类型 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架类库FCL存在着直接的映 ...
- 跟小静读CLR via C#(05)- 访问限定、数据成员
跟小静读CLR via C#(05)- 访问限定.数据成员 今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, over ...
- 零基础带你学习MySQL—修改表(六)
零基础带你学习MySQL-修改表(六)
- 萌新卷妹带你逃出算法无名岛第六站
萌新卷妹带你逃出算法无名岛第六站
- 跟小静读CLR via C#-开篇及目录
最近正在拜读Jeffrey大师的.NET巨作-<CLR via C#>.好书就像一杯茶,需要静下心来慢慢品.在写笔记的过程中,也加入了自己的思考:在和园友们的交流中,理解也不断的加深. 目 ...
- 手把手带你撸一个校园APP(六):失物招领二手交易模块
代码经过简单的整理,已经放到Github上了.https://github.com/zhengweichao/Hevttc 回首来看,代码质量一般,里面也有各种逻辑问题,还望各位看官海涵.接下来有时间 ...
- 带着问题读源码-soul(2021-01-16)
### 带着问题读源码系列之Dubbo插件 像往常一样启动 [soul-admin] 和 [soul-bootstrap] . 因为dubbo需要依赖zookeeper, 需要需要启动一个监听在 lo ...
最新文章
- 【洛谷P3846】【TJOI2007】—可爱的质数(BSGS模板)
- 四旋翼姿态解算——梯度下降法理论推导
- Redis 是怎么实现 “附近的人” 的?
- 【Tuxedo】Tuxedo入门
- MATLAB把多行多列矩阵数据和文字写入txt文件
- Android自定义实现FlowLayout
- 推荐系统相关资源汇总
- 分组框控件 1130
- NS-仿真实验--FTP
- CIA的海外间谍,要如何完美避开AI的监控?
- ubuntu18.04server 真机无法自动获取IP解决方法
- ZooKeeper学习第八期——ZooKeeper伸缩性
- EasyUI:导出datagrid数据到桌面
- SENT (Single Edge Nibble Transmission) 协议 接口
- INVT英威腾GD200A系列变频器使用PID实现恒压供水功能的相关参数设置及接线
- 怎么下载思维导图模板呢?
- 计算机留学美国ps,美国计算机专业ps范文
- android音乐搜索功能实现,撸个应用学Android——空灵音乐本地音乐版
- hctf-2018-Crypto-xorgame
- 移动App性能测试包含哪些内容?App性能测试工具有哪些?
热门文章
- CRUD-员工列表 大体流程
- Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
- Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
- 电磁场与电磁波第一章 矢量分析
- C#中的::运算符的作用
- matlab矩阵分解
- EqualizeHist函数
- 聚类之K-means均值聚类
- 计算机四级网络工程师考点速查,全国计算机等级考试标准教程:四级网络工程师...
- numpy.core.umath failed to import 如何解决