C#编程基础要点:字段、构造、扩展方法与垃圾回收

需积分: 3 1 下载量 170 浏览量 更新于2024-09-14 收藏 176KB DOC 举报
在C#编程中,本文档提供了关于C#语言的关键知识点,包括以下几个方面: 1. **只读字段**:在C#中,只读字段在定义时或构造函数中初始化,一旦设置,其值不能被修改。 2. **继承与构造函数调用规则**:子类的构造函数会首先调用父类的构造函数,如果有带参数的构造函数,则优先调用对应的父类构造函数,如果没有,则调用无参构造函数。 3. **类型参数和泛型**:`public class Farm<T>`展示了泛型的使用,其中`T`是一个类型参数,要求它必须是某个特定的类。`where T: 类名`进一步限制了类型参数的选择。 4. **访问修饰符**:默认情况下,类的访问级别是`internal`,成员默认为`private`,这意味着它们只能在同一个程序集中使用。VS中的快捷键可用于操作属性(Ctrl + R + E)。 5. **扩展方法**:扩展方法是C#的独特功能,它允许静态类为非自身类型的实例添加方法。扩展方法的定义要求类为`static`,方法修饰符为`public static`,且第一个参数通常为`this`关键字,表示扩展的对象。 6. **枚举与标志**:使用`[Flags]`特性标记枚举,允许值进行按位或运算,方便判断组合状态。例如,值1、2、4、8等可以组合起来表示不同的状态。 7. **接口与抽象类的区别**:接口提供一组抽象方法,用于定义行为规范,而抽象类则可以包含具体实现和抽象方法。抽象类通常用于具有共同特征的类的基类,而接口更适用于行为不同的类之间的关联。 8. **字符串处理与内存管理**:字符串使用字符串池技术,将重复的字符串对象合并到一个共享的内存区域,通过`string.Intern()`可以检查字符串是否已经在池中。`string.Equals()`和`==`运算符的重载以及`object.ReferenceEquals()`用于比较对象。 9. **垃圾回收**:C#的垃圾回收仅负责回收托管堆中的内存,不涉及非托管资源如数据库连接、文件句柄等。弱引用用于跟踪已被垃圾回收但仍可能存在的对象,适合资源占用较多的情况。 10. **实例创建与弱引用**:通过`new`关键字创建对象,`WeakReference`提供了一种方式来跟踪对象,即使对象已被回收,仍可通过弱引用尝试访问,但需要检测对象是否还存在。 这些知识点覆盖了C#中的基础语法、面向对象编程、泛型、内存管理和性能优化等方面,有助于理解和使用C#进行高效开发。