猿教程 Logo

C# 部分类(Partial Class)

C#中的每个类都驻留在一个具有.cs扩展名的单独的物理文件中。 C#提供了使用partial 关键字在多个.cs文件中实现单个类的能力。 partial 可以应用于类,方法,接口或结构。

例如,以下MyPartialClass拆分为两个文件:PartialClassFile1.cs和PartialClassFile2.cs:

相关实例:

public partial class MyPartialClass
{
    public MyPartialClass()
    {
    }

    public void Method1(int val)
    {
        Console.WriteLine(val);
    }
}


public partial class MyPartialClass
{
    public void Method2(int val)
    {
        Console.WriteLine(val);
    }
}

PartialClassFile1.cs中的MyPartialClass定义了构造函数和一个公共方法Method1,而PartialClassFile2只有一个公共方法Method2。 编译器将这两个部分类合并为一个类,如下所示:

相关实例:

public class MyGenericClass
{
    public MyPartialClass()
    {
    }
        
    public void Method1(int val)
    {
        Console.WriteLine(val);
    }

    public void Method2(int val)
    {
        Console.WriteLine(val);
    }
}

部分类要求:

  • 所有的部分类定义必须在同一个程序集和命名空间中。

  • 所有部分必须具有相同的辅助功能,如public或pirvate等。

  • 如果任何部分被声明为抽象,密封或基本类型,则整个类被声明为相同类型。

  • 不同的部分可以有不同的基类型,所以最终的类将继承所有的基类型。

  • PartialÂ修饰符只能出现在关键字类,结构或接口之前。

  • 允许嵌套部分类型。

部分类的优点:

  • 多个开发人员可以在单个文件中同时使用单个类。

  • 当使用自动生成的源时,代码可以添加到类,而不必重新创建源文件。 例如,Visual Studio将UI和服务器端代码的HTML代码分成两个单独的文件:.aspx和.cs文件。


部分方法:

部分类或结构可以包含部分方法。 部分方法必须在其中一个部分类中声明。 部分方法可以具有或可以不具有实现。 如果partial方法没有任何部分的实现,那么编译器不会在最终类中生成该方法。 例如,考虑以下带有部分关键字的partial方法:

相关实例:

public partial class MyGenericClass
{
    partial void PartialMethod(int val);

    public MyPartialClass()
    {
            
    }

    public void Method2(int val)
    {
        Console.WriteLine(val);
    }
}


public partial class MyGenericClass
{
    public void Method1(int val)
    {
        Console.WriteLine(val);
    }

    partial void PartialMethod(int val)
    {
        Console.WriteLine(val);
    }
}

PartialClassFile1.cs包含partial方法的声明,PartialClassFile2.cs包含partial方法的实现。

  • 部分方法声明必须以partial修饰符开头。

  • partial方法可以有一个ref参数但不是一个out参数。

  • 部分方法是隐式私有方法。

  • 部分方法可以是静态方法。

  • 部分方法可以是通用的。

下图说明了部分类和部分方法:


编译器将两个部分类组合成一个最终类:


要点
  1. 使用partial关键字将接口,类,方法或结构拆分为多个.cs文件。 

  2. 必须在实现之前声明partial方法。 

  3. 所有的部分类,方法,接口或结构体必须具有相同的访问修饰符。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/csharp-partial-class.html