NET CLR via C#读书笔记 - 第七章 常量和字段

NET CLR via C#(第4版)中文版(百度网盘链接地址) 立即下载

1 常量

1.1 常量定义

  常量是从值不变化的符号,定义常量符号时,值必须在编译阶段就确认,编译后常量将保存在程序集的元数据中。

1.2 常量的特点和限制

  ① 只能定义编译器支持的基元类型的常量,定义非基元类型的常量,必须要将值设置为null(意义不大)。
  ② 常量值永不改变,通常被视为类型的一部分(被视为静态成员,而不是实例成员)。
  ③ 定义常量会生成元数据。
  ④ 代码使用常量时,会在编译时将常量读取出来并嵌入生成的IL代码中,运行时不需要额外分配空间。
  ⑤ 由于常量编译时确定的性质,使用常量不能很好的支持跨程序集的版本控制,一旦某一版本中,定义常量的程序集修改源代码,改变常量的值,那么相对应的使用该程序集的所有应用都需要重新编译,否则在未编译的应用中依旧是使用未修改前的常量值,可能会引发应用程序的未知行为,针对此种情况,可以使用readonly修饰的字段进行代替。

2 字段

2.1 字段定义

  字段是类型的数据成员,容纳了一个值类型的实例或者引用类型的引用。

2.2 字段修饰符

CLR术语C#术语说明
Staticstatic修饰字段为类型状态的一部分,不是对象状态的一部分。
静态字段的内存分配是在类型对象中分配,而类型对象是类型加载到AppDomain中时创建。加载时机是首次引用该类型方法时进行JIT编译时。(CLR和AppDomain可阅读NET CLR via C#第22章 )
Instance(默认)修饰字段为实例状态的一部分。
内存分配是在创建类型实例时进行。
Initonlyreadonly修饰字段只能由构造器方法写入
VolatilevolatileCLR,编译器和硬件不会对使用此修饰符的字段做出“线程不安全”的代码优化。支持volatile修饰的类型有:所有引用类型,Single,Boolean,Byte,SByte,Int16,UInt16,Int32,UInt32,Char以及基础类型为Byte,SByte,Int16,UInt16,Int32,UInt32的所有枚举类型。

  以上内容为对《NET CLR via C#(第四版)》第七章内容的阅读笔记,只记录其中核心部分内容,书中还仔细描述了readonly,内联初始化等话题,如需要详细阅读请自行查阅本书第七章内容,感谢您的阅读。

.NET CLR via C#(第4版) 最新完整版 高清文字版 是第4版 正式版 不是prepress版。 本书是全球享有盛誉的技术作家Jeffrey Richter的经典书籍CLR via C#最新版第四版。 本书针对clr、C#5.0和.net framework 4.5进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。 本书深入、全面探讨.NET Framework、CRL和多核编程,广泛讨论FrameworkClassLibrary(FCL)核心类型,对泛型和线程处理等深奥 难懂的开发概念提供权威、实用的指导。 立即下载

相关推荐

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow)

RML2016.10a (CNN、LSTM、CNN-LSTM、CNN-LSTM-Multi-head-attention, TensorFlow) 包含所有数据和代码,支持一键运行(jupyter)

qq_40999533的博客 1481

NET CLR via C#读书笔记 - 第一章 CLR执行模型

NET CLR via C#读书笔记 - CLR执行模型CLR执行模型1.1 CLR简介1.2 CLR执行模型1.2.1 将源代码编译成托管模块 CLR执行模型 1.1 CLR简介 CLR(Common Language Runtime(公共语言运行时))可以简单理解为是一个支持多种编程语言及多语言互操作,完整的高级虚拟机。   程序在运行的时候有着惊人数量的运行时依赖。每个有用的程序都需要某些运行时函数库,以便其能跟电脑的其它资源(如用户输入设备,磁盘文件,网络通信等)交互,同时程序也需要转换成计算机硬

CreateNewWorld的博客 471

windows10系统上安装最新版mysql 8.0详细步骤

windows10系统上安装最新版mysql 8.0详细步骤

glei20的博客 6715

NET CLR via C#读书笔记 - 第八章 方法

NET CLR via C#读书笔记 - 第八章 方法1 实例构造器与引用类型(类)2 实例构造器和值类型(结构)3 类型构造器4 操作符重载方法5 转换操作符方法5.1 转换操作符方法描述5.2 转换操作符方法重载6 扩展方法7 分部方法 1 实例构造器与引用类型(类)   ① 构造器是将类型实例初始化为良好状态的特殊方法。   ② 元数据表中名字为.ctor   ③ 创建引用类型时,首先为实例的数据字段分配内存并将分配的内存字节初始化为0,其次初始化附加字段(类型对象指针和同步块索引),最后调用实例构造

CreateNewWorld的博客 329

VisionPro九点标定实战:从相机拍照到机器人精准抓取的完整流程

本文详细介绍了VisionPro九点标定技术在工业自动化中的应用,从相机拍照到机器人精准抓取的完整流程。通过硬件配置、标定步骤和实战技巧的解析,帮助工程师实现高精度视觉引导系统,提升生产效率。特别适合需要解决二维图像坐标与物理空间转换问题的自动化项目。

weixin_30664051的博客 406

【论文+代码】ZS-N2N实现小样本零网络图像去噪

本文涵盖论文原文讲解与代码复现。

weixin_46287760的博客 4001

NET CLR via C#读书笔记 - 第十二章 泛型

NET CLR via C#读书笔记 - 第十二章 泛型1 泛型简介2 开放类型和封闭类型3 泛型类型和继承4 泛型类型同一性5 可验证性和约束5.1 主要约束5.2 次要约束5.3 构造器约束5.4 泛型类型变量转型5.5 泛型类型变量设为默认值5.5 泛型类型变量与null比较5.6 两个泛型变量作比较5.7 不要将泛型类型变量作为操作数使用 1 泛型简介   泛型是另一种形式的“代码重用”,或者说“算法重用”。开发者可以定义好算法,排序,搜索,交换等,但是这些算法的数据类型却不会事先指定,而是由使用者

CreateNewWorld的博客 309

Windows下MMdetection3D保姆级安装指南(含CUDA和PyTorch版本避坑)

本文提供Windows平台下MMdetection3D的完整安装指南,重点解决CUDA与PyTorch版本匹配问题。从环境准备到关键组件安装,详细介绍了CUDA Toolkit选择策略、PyTorch精准安装步骤,以及MM系列组件的安装顺序和常见错误解决方案,帮助用户顺利完成3D目标检测环境的配置。

weixin_42628941的博客 490

NET CLR via C#读书笔记 - 第六章 类型和成员基础

NET CLR via C#读书笔记 - 第六章 类型和成员基础1 类型成员1.1 类型成员一览2 类型的可见性3 类型成员的可访问性4 类型的分类4.1 静态类4.2 分部类,结构和接口5 组件,多态和版本控制5.1 C#关键字对其组件版本控制的影响5.2 CLR调用虚方法简述5.2.1 call和callvirt 1 类型成员 1.1 类型成员一览 成员 说明 常量 描述数据值恒定不变的符号。与类型关联,不与类型实例关联。 字段 描述只读或者可读写的数据值。字段可以是静态的(与类型关

CreateNewWorld的博客 275

Stata面板数据OLS回归分析实战指南

OLS回归作为计量经济学的核心分析方法,通过最小化残差平方和实现参数估计,广泛应用于经济学实证研究。其技术价值在于模型简洁、结果易于解释,特别适合处理面板数据中的复杂关系。在实际应用中,配合robust标准误能有效解决异方差问题,而固定效应模型则可控制个体特异性。本文以Stata软件为例,详细演示从数据导入、描述性统计到混合OLS和固定效应模型构建的全流程,重点解析面板数据特有的格式设定、模型选择标准以及结果呈现技巧,为经济学研究者提供可直接复用的分析框架。

weixin_29051811的博客 268

查看电脑mac地址+主机名+用户名并导出

张三:李四,应公司要求,今天下班前必须将这张表格里面用户电脑的mac地址统计出来!李四:我该怎么办呢?一个一个查看,太没有效率了吧!对了,我可以做一个bat脚本啊!

拥抱着青春 1969

《CLR via C#》第六章 读书笔记

第六章 类型和成员基础 第一节 类型的各种成员 1、类型中可定义0个或多个以下种类的成员:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型。 2、无论什么编程语言,编译器都必须能处理源代码,为上述每种成员生成元数据和IL代码。所有编程语言生成的元数据格式完全一致。这正是CLR成为“公共语言运行时”的原因。元数据是所有语言都生成和使用的公共信息。(疑问:面向...

qq_41543031的博客 241

进阶05:Labview与汇川PLC通过OPC UA通信(AM500系列)

本文介绍了LabVIEW与汇川PLC通过OPC UA通信的实现方法。主要内容包括:1)编写汇川AM521 PLC结构化文本程序,配置OPC UA服务器并导出变量;2)使用UaExpert客户端测试读取PLC变量;3)开发C#封装库实现OPC UA连接、读写和订阅功能;4)在LabVIEW中创建通信类,封装dll功能;5)设计LabVIEW界面实现变量读写和PLC程序触发。最终实现了PLC变量监控、数据读写及Y1-Y4输出控制功能,为自动化系统开发提供了基础框架。

weixin_38637405的博客 1300

NET CLR via C#读书笔记 - 第十章 属性

NET CLR via C#读书笔记 - 第十章 属性1 无参属性1.1 无参属性代码1.2 无参属性说明1.3 AIP(自动实现的属性)1.3.1 AIP代码1.3.2 AIP优点与不足1.3.2.1 优点1.3.2.2 不足1.4 字段与属性的区别2 有参属性3 属性访问器性能 1 无参属性 1.1 无参属性代码   代码示例: public class Demo{ private string m_s; private int m_i; public string S{ get{retu

CreateNewWorld的博客 252

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

《CLR via C# 》读书笔记(1) -- .Net程序是如何生成的

说到.NET基础,我觉得应该首先应该要知道一组概念,我觉得作为.NET程序员,这应该算是常识。有可能我目前的理解也不算正确,希望能在以后的积累中逐步完善。CLR- CLR (Common Language Runtime)它为.NET Application提供一个运行时的环境。毕竟.NET程序和普通的Windows应用程序(比如说用C++开发的程序)运行方式是不一样的。在...

Sinolife0605的博客 244

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

<NET CLR via c# 第4版> 读书笔记--目录

  <NET CLR via c# 第4版>个别章节虽读过多次,但始终没有完整读过这本书.即使看过的那些,时间一长,也忘记了大部分.趁着最近不忙,想把这本书好好读一遍,顺便记下笔记,方便随时查看.   真的只是笔记,因为能力有限,并不能很好地讲解一个知识点,只是把我认为比较重要的地方,划个重点,记录到这里.我所追求的,只是尽量别抄错.   所以,如果没看原书,只看这里的话,会比较晕...

weixin_30898109的博客 153

《CLR via C#》读书笔记 之 目录导航

《CLR via C#》读书笔记 之 目录导航 2013-02-27 读书笔记是按书本章节按序写的,只摘录了个人认为比较重要,关系比较紧密的知识点。第4部分 核心机制 和第5部分 线程处理 等有时间再整理 CLR核心功能包括:内存管理,程序集加载,安全性,异常处理,以及线程同步。 第Ⅰ部分 CLR基础 第一章:《CLR via C#》读书笔记 之 CLR执行模型 第二章: 《CLR...

weixin_34319999的博客 64

NET CLR via C#读书笔记 - 第十一章 事件

NET CLR via C#读书笔记 - 第十一章 事件

CreateNewWorld的博客 318

《CLR via C#》读书笔记---06 类型和成员基础

CLR via C#

Eden's space 867

[Clr via C#读书笔记]Cp1CLR执行模型

Cp1CLR执行模型 本章的概念点 CLR=Common Language Runtime 内存管理,程序集加载,安全性,异常处理和线程同步、CLR是基础,支持着面向它的各种语言。各种语言会被对应的编译器转换为托管模块。 不同语言有各自的优点和不足。 在需要托管程序运行的电脑上必须安装CLR(.NET Framework). 托管模块managed module PE32,PE32+=...

diawuzi7244的博客 167

NET CLR via C#读书笔记 - 第四章 类型基础

C#入门学习欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdow

CreateNewWorld的博客 227

NET CLR via C#读书笔记 - 第五章 基元,引用和值类型

NET CLR via C#读书笔记 - 第五章 基元,引用和值类型1 基元类型1.1 概念1.2 C#基元数据类型1.3 基元类型的相关知识点1.3.1 C#中允许基元类型执行安全的隐式转换1.3.2 checked和unchecked2 引用类型和值类型2.1 引用类型和值类型定义2.2 引用类型和值类型相关知识点 1 基元类型 1.1 概念 基元类型可以简单理解为编译器本身支持的数据类型 例如:System.Int32 a = new System.Int32(); //值默认初始化为0 由于

CreateNewWorld的博客 254
上一篇: NET CLR via C#读书笔记 - 第六章 类型和成员基础
下一篇: NET CLR via C#读书笔记 - 第八章 方法
藏海花鸣
博客等级 码龄8年 40粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值