C# CLR回顾:关键特性与元数据详解

0 下载量 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框架的工作原理和高效开发至关重要。