🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C# 部分类和部分方法 > 原文: [https://www.programiz.com/csharp-programming/partial-class-and-methods](https://www.programiz.com/csharp-programming/partial-class-and-methods) #### 在本文中,我们将学习如何以及为什么在 C# 中实现部分类和部分方法。 在很多情况下,您可能需要拆分类定义,例如在处理大型项目时,可能需要多个开发人员和程序员同时处理同一个类。 在这种情况下,我们可以使用称为**部分类**的功能。 * * * ## 部分类简介 在使用 C# (或 OOP)进行编程时,我们可以将类的定义划分为两个或多个源文件。 源文件包含类定义的一部分,并且在编译应用时将所有部分组合在一起。 为了拆分类定义,我们需要使用`partial`关键字。 ### 示例 1: 我们有一个名为`HeightWeightInfo`的项目,它显示了身高和体重。 我们有一个名为`File1.cs`的文件,其子类名为`Record`。 它具有两个整数变量`h`和`w`和一个名为`Record`的方法/构造器,该方法/构造函数分配`h`和`w`的值。 ```cs namespace HeightWeightInfo { class File1 { } public partial class Record { private int h; private int w; public Record(int h, int w) { this.h = h; this.w = w; } } } ``` 这是另一个名为`File2.cs`的文件,具有相同的子类`Record`,该文件只有方法`PrintRecord`。 此方法将显示`h`和`w`的值。 ```cs namespace HeightWeightInfo { class File2 { } public partial class Record { public void PrintRecord() { Console.WriteLine("Height:"+ h); Console.WriteLine("Weight:"+ w); } } } ``` 现在,我们在这里可以看到项目的`Main`方法: ```cs namespace HeightWeightInfo { class Program { static void Main(string[] args) { Record myRecord = new Record(10, 15); myRecord.PrintRecord(); Console.ReadLine(); } } } ``` 在这里,我们将`Record`的对象作为`myRecord`,将参数值 10 和 15 分别传递给`h`和`w`到`File1.cs`中定义的方法。 `PrintRecord`方法由`File2.cs`中定义的对象`myRecord`调用。 这表明`partial`关键字有助于组合在各种文件中定义的类的所有属性,以作为单个类工作。 可以使用`partial`类的地方: 1. 在与多个开发人员一起进行较大项目的同时,它可以帮助开发人员同时在同一个类上工作。 2. 可以在不重新创建由 IDE(即 Visual Studio)自动生成的源文件的情况下,将代码添加或修改到该类。 * * * ### 要记住的事情 `partial`关键字指定可以在命名空间中定义类的其他部分。 如果我们要使一个类成为局部类,则必须使用`partial`关键字。 类的所有部分都应该在相同的命名空间中,并在编译时可用以形成最终类型。 所有部分都必须具有相同的访问修饰符,即私有,公共等。 * 如果任何部分被声明为抽象的,则整个类型被认为是抽象的。 * 如果任何部分声明为密封的,则整个类型都视为密封的。 * 如果任何部分声明了基本类型,则整个类型都将继承该类。 * 在部分定义中声明的任何类成员都可用于所有其他部分。 * 局部类的所有部分都应位于同一命名空间中。 **注意**:`partial`修饰符不适用于委托或枚举声明 * * * ## 部分方法的解释 局部类可以包含局部方法。 类的一部分包含方法的签名。 可以在同一部分或另一部分中定义一个可选实现。 如果未提供实现,则在编译时将删除该方法和所有调用。 ### 示例 2: 让我们以在`file1.cs`中定义的局部类`Car`为例,该类具有三种方法`InitializeCar()`,`BuildRim()`和`BuildWheels()`。 在这些方法中,将`InitializeCar`定义为`partial`。 ```cs public partial class Car { partial void InitializeCar(); public void BuildRim() { } public void BuildWheels() { } } ``` 我们还有另一个名为`file2.cs`的文件,它具有两种方法`BuildEngine`和`InitializeCar`。 方法`InitializeCar`是部分方法,也在`file1.cs`中定义。 ```cs public partial class Car { public void BuildEngine() { } partial void InitializeCar() { string str = "Car"; } } ``` 部分方法声明由两部分组成: 1. 如`file1.cs`中的定义。 2. 与`file2.cs`中的实现相同。 它们可以在部分类的不同部分中,也可以在同一部分中。 * * * ### 关于部分方法的注意事项 * `partial`关键字。 * 返回类型`void`。 * 隐式`private`。 * 并且不能为`virtual`。