.NET面试深度解析:泛型List、DLL、继承与委托

需积分: 10 0 下载量 149 浏览量 更新于2024-07-14 收藏 464KB DOCX 举报
".net专业学习面试题部分内容" 在.NET框架中,.NET程序员经常会遇到一些核心概念和技术,这些内容在面试中常常会被问到。以下是对这些知识点的详细解释: 1. 泛型List集合的长度是动态的,因为List<T>实际上是基于数组实现的。当添加元素超过当前数组容量时,List<T>会自动扩容,通常是翻倍当前大小,以确保能容纳更多的元素。 2. .dll文件是动态链接库文件,属于程序集,它包含可由多个程序同时使用的代码和数据,可以在运行时被加载和调用。 3. 静态成员属于类,不依赖于类的实例即可访问,而实例成员属于类的特定实例,需要先创建对象才能访问。 4. 局部变量是在方法、循环或代码块内部定义的变量,其作用域仅限于该特定的代码块。成员变量(字段)是类的一部分,它们是类的实例或静态属性。属性是类中的特殊成员,提供对私有字段的访问控制,通常带有getter和setter方法。 5. C#中的所有对象都继承自System.Object基类,这是所有类型的基础。 6. 装箱是将值类型转换为对应的引用类型,存储在托管堆中;拆箱则是将引用类型转换回原始的值类型。 7. int?是C#中的可空类型,允许int值为null,而int则不能。 8. C#不支持类的多继承,但接口可以实现多继承,提供了一种实现多态的方式。 9. using关键字在C#中有三个主要用途:引入命名空间、定义资源管理块(在代码块结束时自动释放资源)和为类型创建别名。 10. base关键字用于在子类中访问父类的成员,包括方法、属性和构造函数。 11. 委托是C#中的一种引用类型,它可以引用方法。事件是委托的特殊形式,用于实现发布/订阅模式,保护事件处理方法不被直接调用。 12. 当执行Strings = new String("xyz")时,会在CLR字符串池中创建一个"xyz"对象,并在堆上创建一个新String对象,指向池中的"xyz"。 13. 类和结构(struct)的主要区别在于,类是引用类型,分配在堆上,而结构是值类型,分配在栈上。类支持继承和析构函数,而结构不支持,但两者都可以实现接口。 14. 使用foreach遍历对象时,该对象需要实现IEnumerator接口,或其类型需要声明GetEnumerator方法,以支持迭代。 15. 构造器(Constructor)不能被重写(override),因为构造器不是虚方法,不能被继承。但可以通过重载来提供不同参数的构造函数。 以下是一个简单的C#实现,展示如何使用foreach遍历List<int>: ```csharp using System; using System.Collections.Generic; public class Program { public static void Main() { List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; foreach (var number in numbers) { Console.WriteLine(number); } } } ``` 这段代码展示了如何使用using引入命名空间(System和System.Collections.Generic),并使用List<T>创建一个整数列表,然后通过foreach遍历并打印列表中的每个元素。