在 C# 中,您可以使用 partial 关键字在多个 .cs 文件中拆分类、结构、方法或接口的实现。 编译程序时,编译器将合并来自多个 .cs 文件的所有实现。
考虑以下包含 Employee 类的 EmployeeProps.cs 和 EmployeeMethods.cs 文件。
EmployeeProps.cs
public partial class Employee
{
public int EmpId { get; set; }
public string Name { get; set; }
}
EmployeeMethods.cs
public partial class Employee
{
//constructor
public Employee(int id, string name)
{
this.EmpId = id;
this.Name = name;
}
public void DisplayEmpInfo()
{
Console.WriteLine(this.EmpId + " " this.Name);
}
}
上面,EmployeeProps.cs 包含了 Employee 类的属性,EmployeeMethods.cs 包含了 Employee 类的所有方法。 这些将被编译为一个 Employee 类。
public class Employee
{
public int EmpId { get; set; }
public string Name { get; set; }
public Employee(int id, string name)
{
this.EmpId = id;
this.Name = name;
}
public void DisplayEmpInfo()
{
Console.WriteLine(this.EmpId + " " this.Name );
}
}
部分类的规则
分部类或结构可以包含一个方法,该方法拆分为分部类或结构的两个单独的 .cs 文件。 两个 .cs 文件之一必须包含方法的签名,另一个文件可以包含部分方法的可选实现。 方法的声明和实现都必须有 partial 关键字。
EmployeeProps.cs
public partial class Employee
{
public Employee()
{
GenerateEmpId();
}
public Guid EmpId { get; set; }
public string Name { get; set; }
partial void GenerateEmployeeId();
}
EmployeeMethods.cs
public partial class Employee
{
partial void GenerateEmployeeId()
{
this.EmpId = Guid.NewGuid();
}
}
上面,EmployeeProps.cs 包含在构造函数中使用的部分方法 GenerateEmployeeId() 的声明。 EmployeeMethods.cs 包含 GenerateEmployeeId() 方法的实现。 下面演示了如何创建一个对象,即使用部分方法的 Employee 类。
class Program
{
static void Main(string[] args)
{
var emp = new Employee();
Console.WriteLine(emp.EmpId); // 输出一个随机的Guid
Console.ReadLine();
}
}
通常是一个类太大 有一些类我们是用代码生成的, 我们自己的方法代码不希望影响到生成的代码 开源的软件,我们不希望影响到旧的代码。这样维护的时候很麻烦