C# 图解教程 第5版 —— 第1章 C# 和 .NET 框架

文章目录

    • 1.1 在 .NET 之前
    • 1.2 .NET 时代
      • 1.2.1 .NET 框架的组成
      • 1.2.2 大大改进的编程环境
    • 1.3 编译成 CIL
    • 1.4 编译成本机代码并执行
    • 1.5 CLR
    • 1.6 CLI
    • 1.7 各种缩写
    • 1.8 C# 的演化
    • 1.9 C# 和 Windows 的演化(*)

1.1 在 .NET 之前

  • MFC(Microsoft Foundation Class,微软基础类库)

    微软公司提供的一个类库,以 C++ 类的形式封装了 Windows 的 API,并包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类。

  • COM(Component Object Model,组件对象模型)

    基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。组件对象不使用方法而用接口来描述自身。

1.2 .NET 时代

​ .NET 框架的特点:

  • 多平台:可以在各种计算机上运行。
  • 行业标准:使用行业标准的通信协议,如 XML、HTTP、SOAP、JSON 和 WSDL。
  • 安全性:提供安全的执行环境,即使有来源可疑的代码存在。

1.2.1 .NET 框架的组成

​ 如图 1.1 所示。

image-20231005235647205
图1.1 .NET 框架的组成
  • CLR(Common Language Runtime,公共语言运行库)

    在运行时管理程序的执行,主要内容有

    • 内存管理和垃圾收集;
    • 代码安全验证;
    • 代码执行、线程管理及异常处理。
  • BCL(Base Class Library,基类库)

    是 .NET 框架使用的一个大类库,可以在程序中使用。

1.2.2 大大改进的编程环境

  1. 面向对象的开发环境

    CLR、BCL 和 C# 完全面向对象,形成良好的集成环境。

  2. 自动垃圾收集

    • GC(Garbage Collector,垃圾收集器)

      自动管理内存,删除程序不在访问的对象。

  3. 互操作性

    • 允许不同的 .NET 语言编写的软件模块无缝交互。
      • 只要遵循一定的规则,.NET 语言的程序可以相互使用其他 .NET 语言写的类;
      • .NET 框架被称为“语言无关”。
    • 提供平台调用特性(Platform Invoke,P/Invoke),允许 .NET 代码调用非 .NET 代码。
    • .NET 框架能与 COM 组件相互调用。
  4. 简化的部署

    • 不需要使用注册表注册。
    • 提供并行执行的特性:允许 DLL 不同版本在同一台机器上存在。
  5. 类型安全性

    CLR 检查并确保参数及其他数据对象的类型安全。

  6. 基类库

    .NET 框架提供庞大的基础类库(BCL),有时也称为 FCL(Framework Class Library,框架类库)。

1.3 编译成 CIL

​ .NET 语言的编译器接受源代码,生成名为程序集的输出文件,如图 1.2 所示。

image-20231006001514694
图1.2 编译过程
  • CIL(Common Intermediate Language,公共中间语言)

    即程序集里的代码,不是本机代码。

  • 程序集包含如下信息:

    • 程序的 CIL;
    • 程序中使用的类型的元数据;
    • 对其他程序集引用的元数据。

1.4 编译成本机代码并执行

​ 程序集的 CIL 直到被调用运行时才会被编译成本机代码,运行时执行的步骤如图 1.3 所示。

image-20231006001832196
图1.3 运行时被编译成本机代码
  1. 检查程序集的安全特性;
  2. 在内存中分配空间;
  3. 把程序集中的可执行代码发送给 JIT(Just-In-Time,及时编译器),编译一部分内容为本机代码。

​ 程序集中的可执行代码只在需要的时候由 JIT 编译,之后被缓存起来以备后续使用。一旦 CIL 被编译为本机代码,CLR 就在它运行时进行管理,如释放无主内存、检查数组边界、检查参数类型和管理异常等。

  • 托管代码:由 .NET 框架编写的代码,需要 CLR。

  • 非托管代码:不在 CLR 控制之下运行的代码,如 C/C++、DLL。

image-20231006002716824
图1.4 编译时和运行时的过程概览

1.5 CLR

​ CLR 是 .NET 框架的核心组件,位于操作系统的顶层,管理程序的执行,如图 1.5 所示。

image-20231006003334446
图1.5 CLR概览

1.6 CLI

  • CLI(Common Language Infrastructure,公共语言基础结构)

    一组 .NET 标准,将 .NET 框架的所有组件连接成一个内聚、一致的系统,详细说明了所有软件都必须遵守的规则和约定,如图 1.6 所示。

image-20231006003946782
图1.6 CLI的组成
  • CTS(Common Type System,公共类型系统)

    定义了在托管代码中一定会使用的类型的特征,如

    • 定义了一组丰富的内置类型,及每种类型固有、独有的特性;
    • .NET 兼容编程语言提供的类型,通常映射到 CTS 中已定义的内置类型集的某一个特殊子集;
    • 所有类型都继承 Object;
    • 确保系统类型和用户定义类型能被任何 .NET 兼容的语言所使用。
  • CLS(Common Language Specification,公共语言规范)

    详细说明了 .NET 兼容编程语言的规则、属性和行为,包括数据类型、类结构和参数传递。

1.7 各种缩写

image-20231006010243033
图1.7 .NET缩写

1.8 C# 的演化

image-20231006010337527
图1.8 C# 各版本的焦点特性

1.9 C# 和 Windows 的演化(*)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/154028.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文解析——AMD EPYC和Ryzen处理器系列的开创性的chiplet技术和设计

ISCA 2021 摘要 本文详细解释了推动AMD使用chiplet技术的挑战,产品开发的技术方案,以及如何将chiplet技术从单处理器扩展到多个产品系列。 正文 这些年在将SoC划分成多个die方面有一系列研究,MCM的概念也在不断更新,AMD吸收了…

Docker-compose创建LNMP服务并运行Wordpress网站平台

一、部署过程 1.安装Docker #关闭防火墙 systemctl stop firewalld.service setenforce 0#安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/d…

JavaEE-文件IO操作

构造方法 一般方法,有很多,我们以下只是列举几个经常使用的 注意在上述的操作过程中,无论是绝对路径下的这个文件还是相对路径下的这个文件,都是不存在的 Reader 使用 --> 文本文件 FileReader类所涉及到的一些方法 Fil…

【轻松玩转MacOS】安全隐私篇

引言 这一篇将介绍如何保护MacOS的安全,包括如何设置密码,使用防火墙,备份数据等重要环节,避免因不慎操作或恶意攻击带来的安全风险,让你的MacOS之旅更安心、更放心。 一、设置密码:保护你的MacOS的第一道…

关于神经网络的思考

关于感知机 感知机(Perceptron)和神经网络(Neural Network)之间有一定的关系,可以说感知机是神经网络的一个基本组成单元。 感知机: 感知机是一种简单的二分类线性分类器。它接受多个输入,对每…

【小记】Java将字符串中的EL表达式动态转换为Map中的值

项目中碰到了这样的问题&#xff0c;例如数据库中有一个字符串模版如下&#xff1a; ${userNamme}开启了一个新的${project}我们要替换里面的${}表达式&#xff0c;来实现动态的生成完整的信息~实现方式很简单如下&#xff1a; 引入pom依赖&#xff1a; <dependency>&l…

使用css制作3D盒子,目的是把盒子并列制作成3D货架

注意事项&#xff1a;这个正方体的其他面的角度很难调&#xff0c;因此如果想动态生成&#xff0c;需要很复杂的设置动态的角度&#xff0c;反正我是折腾了半天没继续搞下去&#xff0c; 1. 首先看效果&#xff08;第一个五颜六色的是透明多个面&#xff0c;第2-3都是只有3个面…

自动拟人对话机器人在客户服务方面起了什么作用?

在当今数字时代&#xff0c;企业不断寻求创新的方法来提升客户服务体验。随着科技的不断进步和消费者期望的提升&#xff0c;传统的客户服务方式逐渐无法满足现代消费者的需求。因此&#xff0c;许多企业正在积极探索利用新兴技术来改进客户服务&#xff0c;自动拟人对话机器人…

MongoDB——window11安装mongodb5.0.21版本服务端(图解版)

目录 一、mongodb官网下载地址二、安装步骤三、配置环境变量四、运行mongodb 一、mongodb官网下载地址 mongodb官网下载地址&#xff1a;https://www.mongodb.com/try/download/community 二、安装步骤 双击运行下载好的mongodb-windows-x86_64-5.0.21-signed.msi安装包&am…

ELementUI之CURD及表单验证

一.CURD 1.后端CURD实现 RequestMapping("/addBook")ResponseBodypublic JsonResponseBody<?> addBook(Book book){try {bookService.insert(book);return new JsonResponseBody<>("新增书本成功",true,0,null);} catch (Exception e) {e.p…

bin-editor-next实现josn序列化

线上链接 BIN-EDITOR-NEXThttps://wangbin3162.gitee.io/bin-editor-next/#/editor gitee地址bin-editor-next: ace-editor 的vue3升级版本https://gitee.com/wangbin3162/bin-editor-next#https://gitee.com/link?targethttps%3A%2F%2Funpkg.com%2Fbin-editor-next%2F 实现…

23年基因蓝皮书略读

2023年基因慧蓝皮书略读 1.发展环境1.1 宏观环境1.2 基因产业内涵 2 应用场景2.1 生育支持与生育健康筛查2.2 老龄化与肿瘤精准防控2.2.1 肿瘤早筛2.2.2 肿瘤伴随诊断2.2.3 MRD检测2.2.4 生物药研发及基因科技 3 产业发展3.1 产业图谱及产业链分析拟上市肿瘤检测公司上市基因企…

大数据要怎么样学才可以到企业级实战

大数据在企业级实战中扮演着重要角色&#xff0c;因此掌握大数据技术和应用是非常有价值的。下面将详细介绍学习大数据并达到企业级实战水平的步骤和方法。 一、基础知识准备 1. 数据基础知识&#xff1a;了解数据的概念、类型、结构等基本概念&#xff0c;并熟悉常见的数据处…

一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)

Redis服务器是一个事件驱动程序&#xff0c;它主要处理两类事件&#xff1a;文件事件和时间事件。这些事件的处理和Redis命令的执行密切相关。下面我将以Redis服务端命令为切入点&#xff0c;深入解析其工作原理和重要性。 首先&#xff0c;我们先了解Redis服务端有哪些命令。…

IDEA的使用(二)快捷键 (IntelliJ IDEA 2022.1.3版本)

1. IDEA中的常用快捷键 1.1 通用型快捷键 1.2 提高编写速度 ctrl shift ↑或↓ 只能在方法里面移动代码。 alt shift ↑或↓ 可以向方法外移动代码。 设置过自动导包&#xff0c;所以不用批量导包啦。 1.3 类结构、查找和查看源码 1.4 查找、替换和关闭 1.5 调整格式 1.6 De…

复旦管院启动科创战略,培养科技研发人才,引领未来发展!

今年夏天&#xff0c;600多位优秀的企业家成为复旦大学EMBA 2023级新生。在疫情结束后&#xff0c;他们选择百战归来再读书&#xff0c;重新回到久违的课堂&#xff0c;共同探索科创大时代下企业的商业本质&#xff0c;开启新的学习与人生旅程。复旦大学管理学院院长陆雄文教授…

解决方案|法大大电子签助力食品行业打通内外部高效协作链路

对食品行业来说&#xff0c;技术是保证食品安全的重要前提和基础。数字化转型就是要将传统的食品行业与新技术相结合&#xff0c;从而达到改善传统食品生产模式、提高传统食品生产效率的目的。通过数字化技术来推动企业从原材料采购、产品设计、生产、营销、物流、合同管理等全…

探馆天津车展 近距离感受“极致性能王”远航汽车

近年来&#xff0c;新能源汽车产业发展迅猛。得益于新能源车型在成本控制、品质、安全性等多方面的出色表现&#xff0c;消费者对新能源汽车的需求一直呈现刚性。2023年&#xff0c;虽然新能源汽车已经进入无补贴时代&#xff0c;但消费者对新能源汽车的需求依旧有增无减&#…

Zabbix监控系统 自定义监控项、自动发现与自动注册

Zabbix监控系统 自定义监控项、自动发现与自动注册 一、自定义监控内容部署实例二、zabbix 自动发现与自动注册部署实例2.1 部署zabbix自动发现 一、自定义监控内容部署实例 案列&#xff1a;自定义监控客户端服务器登录的人数 需求&#xff1a;限制登录人数不超过 3 个&#…