partial 关键字

QuibblerQuibbler 2025-04-24 约 6 分钟 1258 次阅读

partial 关键字

在 C# 中,partial 关键字用于将一个类、结构或接口的定义拆分成多个部分。这些部分可以分布在不同的源文件中,但它们在编译时会被合并为一个完整的类型。

1、partial作用

partial 在以下几种场景中特别有用:

1.1、代码生成工具

代码生成工具(如设计器)通常会生成部分代码,而开发者可以在另一个部分中添加自定义逻辑。这样,即使生成的代码被更新,开发者添加的代码也不会丢失。

1.2、分层开发

在大型项目中,将一个类的定义拆分成多个文件可以提高代码的可维护性和可读性。不同的开发人员可以独立工作,而不会相互干扰。

1.3、扩展类的功能

可以在不修改原始类定义的情况下,通过添加新的部分来扩展类的功能。

2、语法

partial 类的语法如下:

public partial class MyClass{
        // 第一部分的成员
    }
    
    public partial class MyClass{
        // 第二部分的成员
    }

2.1.示例

假设有一个名为 Person 的类,将它的属性和方法分别放在两个不同的文件中。

文件1:PersonProperties.cs

public partial class Person{
    public string Name { get; set; }
    public int Age { get; set; }}

文件2:PersonMethods.cs

public partial class Person{
        public void SayHello()
            {
                Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");
            }
    }

2.2、使用

在其他文件中,可以像使用普通类一样使用 Person 类:

class Program{
        static void Main()
        {
            Person person = new Person
                {
                    Name = "Alice",
                    Age = 30
                };
            person.SayHello(); // 输出: Hello, my name is Alice and I am 30 years old.
    }}

2.3、注意事项

①所有部分必须在同一程序集中:partial的所有部分必须在同一个程序集中,但可以分布在不同的文件中。

②访问修饰符必须一致:所有部分的访问修饰符(如 public、internal 等)必须一致。

③成员名称不能重复:在所有部分中,成员(如方法、属性、字段等)的名称不能重复。

3、常见用途

3.1. 代码生成工具

例如,Visual Studio 的设计器会生成部分代码,而开发者可以在另一个部分中添加自定义逻辑:

public partial class Form1 : Form{
    public Form1()
    {
        InitializeComponent();
    }}// 自定义代码public partial class Form1{
    private void MyCustomMethod()
    {
        // 自定义逻辑
    }}

3.2. 分层开发

在大型项目中,将一个类的定义拆分成多个文件可以提高代码的可维护性和可读性:

// 文件1:
    Person.cspublic partial class Person{
    public string Name { get; set; }
    public int Age { get; set; }}
    
    // 文件2:
    PersonBehavior.cspublic partial class Person{
    public void SayHello()
    {
        Console.WriteLine($"Hello, my name is {Name} and I am {Age} years old.");
    }}

partial是 C# 中一个非常有用的特性,它允许将一个类的定义拆分成多个部分,分布在不同的文件中。这在代码生成工具、分层开发和扩展类的功能时特别有用。通过合理使用partial,可以提高代码的可维护性和可读性。

相关推荐

精选
获取系统SDK版本、判断手机ROM
Code

获取系统SDK版本、判断手机ROM

Build获取系统SDK版本Android中部分API的使用,需要在特定的SDK版本之后才能使用,因此在兼容老版本SDK的时候,经常需要判断API的版本。各种Android版本的对应关系参考《Android各版本对应的SDK版本》判断手机ROM有时候需要判断手机系统的ROM,检测ROM是MIUI、EMUI还是Flyme,可以使用getprop命令,去系统build.prop文件(关于build.p

3.7k
精选
AndroidStudio中各种中文乱码问题
Code

AndroidStudio中各种中文乱码问题

AndroidStudio中各种中文乱码问题1、编译Java错误信息乱码在出现这个Annotation processors must be explicitly declared now...问题的时候,正好也发现AndroidStudio Build Output错误信息都乱码。经常遇到各种问题,习惯了,现在遇到的问题,都是以后的答案。 1.1、修改项目build.gradle(无效)在整个p

2.4k
AndroidStudio 报错:has no declaration in the base values folder
Code

AndroidStudio 报错:has no declaration in the base values folder

在资源文件中正常定义的值,也能编译运行。昨天还正常,今天一打开就报错。应该又是AndroidStudio自身的Bug了。原因众说纷纭,参考Stack Overflow 一篇类似的讨论。解决:File => Invalidate Caches / Restart => Invalidate and Restart.

4.4k