### 对象和类型:C#相关技术
#### 一、引言
C#作为一种现代的、面向对象的编程语言,被广泛应用于.NET框架的各种应用程序开发之中。本书旨在介绍.NET的基础内容,重点聚焦于C#语言的核心概念和技术。通过本书的学习,读者能够深入理解对象和类型在C#中的应用,并掌握构建高效、健壮的应用程序所需的关键技能。
#### 二、对象和类型的介绍
在C#中,对象和类型是构建复杂应用程序的基本单元。对象是类的实例,而类型则定义了对象的行为和状态。本章节将详细介绍以下主题:
##### 2.1 类和结构
- **定义**:类和结构是创建对象的模板,其中包含数据和操作数据的方法。
- **类**:类是一种引用类型,用于定义对象的行为和状态。例如,一个`Customer`类可以包含`CustomerID`、`FirstName`、`LastName`等字段,以及处理这些数据的方法。
```csharp
class PhoneCustomer {
public const string DayOfSendingBill = "Monday";
public int CustomerID;
public string FirstName;
public string LastName;
}
```
- **结构**:结构是一种值类型,主要用于表示小型的数据集合。与类相比,结构不支持继承并且在内存中的存储方式不同(存储在栈上)。
```csharp
struct PhoneCustomerStruct {
public const string DayOfSendingBill = "Monday";
public int CustomerID;
public string FirstName;
public string LastName;
}
```
##### 2.2 字段、属性和方法
- **字段**:字段用于存储类的状态。例如,在`PhoneCustomer`类中,`CustomerID`就是一个字段。
- **属性**:属性提供了一种更安全的方式访问字段。可以通过`get`和`set`方法来实现对字段的封装。
```csharp
public string FullName {
get { return FirstName + " " + LastName; }
set { /* Set FirstName and LastName based on value */ }
}
```
- **方法**:方法用于定义类的行为。例如,可以定义一个方法来发送账单。
```csharp
public void SendBill() {
// Send bill logic
}
```
##### 2.3 按值和引用传送参数
- **按值传递**:当参数是值类型时,会创建一个新的副本,因此改变不会影响原始数据。
- **按引用传递**:当参数是引用类型时,实际上传递的是对象的引用,因此对参数的修改会影响原始对象。
##### 2.4 方法重载
- **定义**:方法重载允许在同一个类中使用相同的方法名但具有不同的参数列表来定义多个方法。
```csharp
public void ProcessOrder(int orderID) { /* ... */ }
public void ProcessOrder(int orderID, bool isUrgent) { /* ... */ }
```
##### 2.5 构造函数和静态构造函数
- **构造函数**:构造函数用于初始化对象的状态。可以定义无参构造函数和带参数的构造函数。
```csharp
public PhoneCustomer() { /* ... */ }
public PhoneCustomer(int customerID, string firstName, string lastName) { /* ... */ }
```
- **静态构造函数**:静态构造函数用于初始化类的静态成员。在类的第一个实例被创建之前自动调用。
```csharp
static PhoneCustomer() {
// Initialize static members
}
```
##### 2.6 只读字段
- **定义**:只读字段使用`readonly`关键字声明,只能在构造函数或初始化器中赋值。
```csharp
public readonly int ID;
public PhoneCustomer(int id) {
this.ID = id;
}
```
##### 2.7 Object类
- **定义**:`Object`类是所有类型的基类。它定义了一些通用的方法,如`ToString()`、`Equals()`等。
#### 三、继承
- **定义**:继承是面向对象编程的一个核心概念,允许创建新的类(派生类)来继承现有类(基类)的特性和行为。
- **示例**:`Customer`类可以继承自`Person`类,从而获取通用的行为和状态。
```csharp
class Person {
public string Name;
public virtual void DisplayInfo() { /* ... */ }
}
class Customer : Person {
public int CustomerID;
public override void DisplayInfo() { /* ... */ }
}
```
#### 四、总结
本章节详细介绍了C#中的对象和类型的概念,包括类和结构的区别、字段、属性、方法、构造函数、静态构造函数等。此外,还介绍了继承的基本概念。通过学习这些基础知识,开发者能够更好地理解和应用C#的面向对象特性来构建高质量的应用程序。下一章将继续深入探讨继承及与之相关的高级特性。