C# CLR回顾:关键特性与元数据详解
114 浏览量
更新于2024-09-01
收藏 103KB PDF 举报
C# CLR笔记总结概述了.NET Framework的核心组件及其功能,特别是Common Language Runtime (CLR)。CLR是.NET框架的关键部分,它由两个主要元素组成:公共语言运行库(Common Language Infrastructure, CLI)和框架类库(Framework Class Library, FCL)。以下是其中的关键知识点:
1. **CLR架构**:
- .NET Framework由.NET Common Language Runtime(CLR)和Framework Class Library(FCL)组成。CLR负责执行.NET程序,而FCL则提供了丰富的预定义类库供开发者使用。
2. **错误处理**:
- CLR采用异常处理机制来报告和管理错误。所有的错误和异常都被封装在.NET的异常体系结构中,使得程序员能够以一致的方式处理它们。
3. **智能感知**:
- 智能感知(IntelliSense)是IDE中的一个强大功能,主要依赖于元数据解析。元数据包含了关于类型、方法和属性的详细信息,帮助开发人员快速编写代码。
4. **语言集成**:
- CLR的一个重要特性是支持多种编程语言,如C#、VB.NET等,这些语言可以在同一个平台上无缝集成,并通过.NET互操作性实现语言间的通信。
5. **JIT编译**:
- 当方法首次执行时,会通过即时编译(Just-In-Time, JIT)将其转换为本地机器码,从而避免了性能损失。之后,对这些方法的调用将以优化过的形式高效运行。
6. **方法签名**:
- 方法签名包括参数数量、顺序、类型以及返回值类型的信息,这对于方法的调用和类型安全至关重要。
7. **类型一致性**:
- 不论使用哪种.NET语言,类型的行为由.NET的公共类型系统(Common Type System, CTS)统一定义,确保了跨语言的兼容性和可移植性。
8. **CLS合规性**:
- 通过使用`[assembly:CLSCompliant(true)]`属性,可以检查代码是否遵循Common Language Specification (CLS),这是一种保证跨语言互操作性的标准。
9. **类型默认修饰符**:
- 在.NET中,类型默认为internal,体现了微软倾向于选择最低级别的访问修饰符(如private)的策略。
10. **类型成员**:
- 每个类型在CLR中要么包含字段(存储数据),要么包含方法(实现功能)。
11. **csc.rsp文件**:
- csc.rsp文件用于配置编译器选项,`/noconfig`开关忽略配置文件中的设置,仅使用命令行参数。
12. **元数据详解**:
- 元数据是二进制数据结构,包含定义、清单和引用等表,是类型信息的存储和管理关键。
13. **托管PE文件**:
- 托管的PE文件由PE32+头、CLR头、元数据和中间语言(IL)代码四部分构成。
14. **程序集**:
- 是一组类型定义文件和资源文件的集合,有助于代码复用和管理,只下载和加载实际使用的代码。
15. **版本控制与文化**:
- 程序集版本号包含主版本号、副版本号等信息,`AssemblyCulture`属性设置程序集的语言和区域设置。
16. **MSI安装**:
- 使用Microsoft Installer (MSI) 文件可以实现即需安装(On-Demand Installation),提高部署效率。
17. **弱命名与DllHell**:
- 弱命名可能导致DllHell,当多个程序集使用相同的弱命名时,可能会导致版本冲突。
18. **GAC安装**:
- 可以将程序集添加到全局应用程序缓存(GAC),使用Windows Explorer Shell的shFusion.dll提供支持。
19. **命令行操作**:
- 在命令行环境下,可以使用特定命令进行.NET相关的操作,例如编译、调试和管理程序集。
通过以上总结,我们可以看到C# CLR笔记涉及了从框架结构到编译原理、错误处理、代码兼容性,以及管理工具等多个方面的内容,这对于深入理解.NET框架的工作原理和高效开发至关重要。
2012-12-17 上传
2023-07-28 上传
2020-12-26 上传
2010-12-07 上传
2019-07-28 上传
2021-06-13 上传
2022-07-27 上传
weixin_38636671
- 粉丝: 6
- 资源: 928
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库