📜  C#部分类和部分方法

📅  最后修改于: 2020-10-06 09:36:06             🧑  作者: Mango

在本文中,我们将学习如何以及为什么在C#中实现部分类和部分方法。

在许多情况下,您可能需要拆分类定义,例如,在处理大型项目时,可能需要多个开发人员和程序员同时处理同一个类。在这种情况下,我们可以使用称为Partial Class的功能。


部分课程简介

在使用C#(或OOP)进行编程时,我们可以将类的定义划分为两个或多个源文件。源文件包含类定义的一部分,并且在编译应用程序时将所有部分组合在一起。为了拆分类定义,我们需要使用partial关键字。

范例1:

我们有一个名为HeightWeightInfo的项目,该项目显示身高和体重。

我们有一个名为File1.cs的文件,其子类名为Record 。它具有两个整数变量hw和一个名为Record的方法/构造函数,用于分配hw的值。

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 。此方法将显示hw的值。

namespace HeightWeightInfo
{
    class File2
    {
    }
    public partial class Record
    {
        public void PrintRecord()
        {
            Console.WriteLine("Height:"+ h);
            Console.WriteLine("Weight:"+ w);
        }
    }
}

现在,我们可以在这里看到项目的主要方法:

namespace HeightWeightInfo
{
    class Program
    {
        static void Main(string[] args)
        {
            Record myRecord = new Record(10, 15);
            myRecord.PrintRecord();
            Console.ReadLine();
        }
    }
}

在这里,我们将Record类的对象作为myRecord ,它将参数值10和15分别传递给hwFile1.cs定义的方法。

File2.cs中定义的myRecord对象调用File2.cs

这表明partial关键字有助于将在各种文件中定义的类的所有属性组合在一起,以作为单个类工作。

可以使用partial类的地方:

  1. 当与一个以上的开发人员一起从事较大的项目时,它可以帮助开发人员同时在同一个班上工作。
  2. 无需重新创建由IDE(即Visual Studio)自动生成的源文件,就可以将代码添加或修改到类中。

关于部分课程的注意事项

partial关键字指定可以在名称空间中定义类的其他部分。如果我们要使类成为局部类,则必须使用partial关键字。类的所有部分都应该在相同的名称空间中,并在编译时可用以形成最终类型。所有部分都必须具有相同的访问修饰符,即私有,公共等。

  • 如果任何部分被声明为抽象的,则整个类型被认为是抽象的。
  • 如果任何部分声明为密封的,则整个类型都视为密封的。
  • 如果任何部分声明了基本类型,则整个类型都将继承该类。
  • 在部分定义中声明的任何类成员都可用于所有其他部分。
  • 局部类的所有部分都应在同一命名空间中。

**注意: partial修饰符不适用于委托或枚举声明


部分方法的解释

局部类可以包含局部方法。类的一部分包含方法的签名。可以在同一部分或另一部分中定义一个可选的实现。如果未提供实现,则在编译时将删除该方法和所有调用。

范例2:

让我们以在file1.cs中定义的局部类Car file1.cs ,它具有三种方法InitializeCar (), BuildRim ()和BuildWheels ()。在这些方法中, InitializeCar被定义为partial

public partial class Car
{
    partial void InitializeCar();
    public void BuildRim() { }
    public void BuildWheels() { }
}

我们还有另一个名为file2.cs文件,它具有两个方法BuildEngineInitializeCarInitializeCar方法是部分方法,该方法也在file1.cs定义。

public partial class Car
{
    public void BuildEngine() { }
    partial void InitializeCar()
    {
        string str = "Car";
    }
}

部分方法声明由两部分组成:

  1. 定义如在file1.cs
  2. file2.cs的实现file2.cs

它们可以在部分类的不同部分中,也可以在同一部分中。


关于部分方法的注意事项

  • partial关键字。
  • 返回类型void
  • 隐含的private
  • 并且不能是virtual