C# 分部類和方法(Partial)

在C#中,可以使用 partial 關(guān)鍵字拆分多個(gè).cs文件中的類、結(jié)構(gòu)、方法或接口的實(shí)現(xiàn)。編譯程序時(shí),編譯器將合并來(lái)自多個(gè).cs文件的所有實(shí)現(xiàn)。

看以下包含 Employee 類的 employeeprops.cs 文件和 employeemethods.cs 文件。

public partial class Employee
{
    public int EmpId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}
public partial class MyPartialClass
{
    public Employee(int Id, string name)
    {
        this.EmpId = Id;
        this.Name = name;
    }

    public void DisplayEmployeeInfo()
    {
        Console.WriteLine(this.EmpId + " " this.FirstName + " " + this.LastName);
    }

    public void Save(int id, string firstName, string lastName)
    {
        Console.WriteLine("Saved!");
    }
}

上面,EmployeeProps.cs包含Employee類的屬性,而employeememethods .cs包含Employee類的所有方法。這些類將被編譯為一個(gè)Employee類。

public class Employee
{
    public int EmpId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }

    public Employee(int Id, string name)
    {
        this.EmpId = Id;
        this.Name = name;
    }

    public void DisplayEmployeeInfo()
    {
        Console.WriteLine(this.EmpId + " " this.FirstName + " " + this.LastName);
    }

    public void Save(int id, string firstName, string lastName)
    {
        Console.WriteLine("Saved!");
    }
}

分部類規(guī)則

  • 所有分部類定義必須位于同一程序集和命名空間中。

  • 所有分部都必須具有相同的可訪問(wèn)性,例如公共或私有等。

  • 如果任何分部聲明為抽象、密封或基類型,那么整個(gè)類聲明為相同的類型。

  • 不同的分部可以具有不同的基本類型,因此最終類將繼承所有基本類型。

  • Partial修飾符只能出現(xiàn)在關(guān)鍵字class,struct 或 interface之前。

  • 允許嵌套分部類型。

分部方法

分部類或結(jié)構(gòu)可以包含一個(gè)方法,該方法可以拆分為分部類或結(jié)構(gòu)的兩個(gè)單獨(dú)的.cs文件。兩個(gè).cs文件中的一個(gè)必須包含方法的簽名,其他文件可以包含分部方法的可選實(shí)現(xiàn)。方法的聲明和實(shí)現(xiàn)都必須具有partial 關(guān)鍵字。

public partial class Employee
{
    public int EmpId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }

    partial void GenerateEmployeeId();

}
public partial class MyPartialClass
{
    partial void GenerateEmployeeId()
    {
        this.EmpId = random();
    }
}

上面, employeeprops.cs 文件包含 DisplayEmployeeInfo 方法的簽名, employeemethods.cs 文件包含它的實(shí)現(xiàn)。編譯器將在編譯時(shí)將所有分部合并為一個(gè)。

它要求包括分部方法的簽名,但不需要提供實(shí)現(xiàn)。如果調(diào)用但未實(shí)現(xiàn)該方法,則不會(huì)有編譯時(shí)或運(yùn)行時(shí)錯(cuò)誤。

分部方法規(guī)則

  • 分部方法必須使用partial關(guān)鍵字,并且必須返回void。

  • 分部方法可以有in 或 ref沒(méi)有out參數(shù)。

  • 分部方法是隱式私有方法,因此不能是虛方法。

  • 分部方法可以是靜態(tài)方法。

  • 分部方法可以是泛型方法。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清