.NET面试必备:CLR、类型系统与多态解析

需积分: 10 3 下载量 159 浏览量 更新于2024-10-19 收藏 359KB DOC 举报
"net面试之葵花宝典" 在.NET面试中,掌握核心概念和技术是非常重要的。以下是一些关键知识点的详细解释: 1. CLR(Common Language Runtime):这是.NET框架的核心,它负责代码的执行、内存管理、异常处理以及类型安全。CLR提供了跨语言的互操作性,使得不同语言编写的代码能够无缝地协同工作。 2. CTS(Common Type System):它是.NET框架的一部分,定义了一套统一的类型系统,确保所有.NET语言都能理解和使用相同的数据类型。CTS确保了类型的一致性和互操作性。 3. CLS(Common Language Specification):这是.NET的一种规范,规定了编程语言应遵循的规则,以确保跨语言的兼容性。遵循CLS的语言编写的代码可以在任何符合CLS的.NET环境中使用。 4. 基元类型:在.NET中,基元类型包括如int、bool、char等内置数据类型,它们由编译器直接支持,无需额外的引用或实例化。 5. 值类型与引用类型:值类型(如int、struct)存储在栈上,直接包含其值,内存不由GC管理。它们在内存中直接存储,访问速度快但不能为null。引用类型(如class)存储在堆上,存储的是对象的引用,由GC管理,可以为null。引用类型访问速度相对较慢,但可以更灵活地表示复杂的数据结构。 6. Equals、==和ReferenceEquals的区别:Equals是用于比较对象内容是否相等的方法,可以被重写;==运算符在比较值类型时比较值,在比较引用类型时比较引用;ReferenceEquals是直接比较两个对象的引用是否相同,不考虑内容。 7. 虚方法:虚方法是可以通过子类重写的方法,允许子类提供自己的实现,是多态的基础。多态是指子类对象可以替换父类对象,并表现出子类特有的行为。 8. overload(重载)和override(重写):重载是同名方法在同一个类中通过不同的参数列表实现,不涉及继承。重写是在派生类中对基类的虚方法进行新的实现,是多态的关键。 9. 基于接口编程:接口定义了一组方法签名,但不提供实现,强制实现类提供具体实现。接口常用于定义一组契约,让不相关的类遵循相同的约定,实现多继承效果。 10. 抽象类与接口的使用:抽象类可以包含实现的成员,适用于需要共享实现的情况;接口只定义方法,不包含实现,适用于定义对象的行为。选择使用哪个取决于设计需求:若需控制组件版本,选择抽象类;若需在不相关对象间提供通用功能,选择接口。 抽象类与接口的比喻形象地说明了它们的角色:抽象类是基础特性,接口是特定行为。例如,"飞"是接口,F22和鸽子代表不同的抽象类,它们实现了"飞"这个接口。同时,抽象类"门"定义了基本属性,而"锁"和"门铃"作为接口,规定了附加功能。