C#编程:深入理解类、对象和静态方法

需积分: 10 2 下载量 129 浏览量 更新于2024-07-13 收藏 1.58MB PPT 举报
"深入.NET平台和C#编程的第二章,主要讨论了常见错误以及C#中的数据类型、类和对象的概念。" 在深入.NET平台和C#编程的学习中,我们经常会遇到一些编程错误,比如在提供的代码示例中,提到了两个常见的错误: 1. **静态方法只能调用静态方法**:在C#中,静态方法属于类本身,而不是类的实例。因此,它们不能访问非静态成员,包括实例方法和实例字段。在示例中,`SayHi()`方法不是静态的,如果尝试在静态上下文中调用它(如在另一个静态方法中),编译器会报错。 2. **静态成员只能由类名调用**:静态字段或方法属于类的静态部分,它们不需要类的实例就可以访问。在示例中,`Student.country`是一个静态字段,应该通过类名来访问,即`Student.country`,而不是通过类的实例`stu.country`。 本章还涵盖了C#中的数据类型和类的相关概念: - **C#数据类型**:C#有两类数据类型,值类型(如整型、浮点型、布尔型、结构)和引用类型(如类、接口、数组)。值类型直接存储其值,而引用类型存储对内存中对象的引用。 - **类和对象**:类是面向对象编程的基础,代表一组相关属性(数据)和方法(行为)的模板。对象是类的实例,具有类定义的状态和行为。类是抽象的,而对象是具体的。 - **类的属性**:属性是类的成员,用于封装类的字段。它们提供了一种安全访问字段的方式,可以包含get和set访问器,以控制字段的读取和写入。在示例中,`PM`类展示了如何定义带有验证逻辑的属性。 - **自动属性**:C#提供了自动属性的特性,可以简化属性的定义,减少代码量。当不需要自定义get和set访问器时,可以使用自动属性。编译器会自动为属性生成私有字段。 - **封装**:封装是面向对象编程的三大特征之一,它隐藏了类的内部实现细节,只对外暴露必要的接口。类通过访问修饰符(如public、private)来实现封装,保护数据的安全性。 本章的任务包括使用Visio绘制基本类图,实现不同功能(如项目经理评分、计算机编号、投票器),以及巩固类、对象、封装和方法调用等概念。通过这些任务,学习者能够加深对C#中类和对象的理解,以及如何运用静态方法和封装原则来解决实际问题。