English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс C#

Дополнительный курс C#

C#面向对象(OOP)

Частичные классы и методы (Partial) в C#

В C# можно использовать ключевое слово partial для разделения класса, структуры, методов или интерфейса на несколько файлов .cs. При компиляции программы компилятор объединяет все реализации из нескольких файлов .cs.

Смотрите следующий файл employeeprops.cs, содержащий класс Employee, и файл 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. Эти классы будут скомпилированы в один класс 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!");
    }
}

Правила частных классов

  • Все части должны быть определены в одном ассембле и пространстве имён.

  • Все части должны иметь одинаковый уровень доступа, например, общедоступный или частный.

  • Если любая часть объявлена как абстрактная, запечатанная или базовая, то вся классовая宣言 объявляется того же типа.

  • Разные части могут иметь разные базовые типы, поэтому конечный класс будет наследовать все базовые типы.

  • Декоратор partial может出现在 перед ключевыми словами class, struct или interface.

  • Разрешает вложение частных типов.

Частные методы

Частные классы или структуры могут содержать метод, который можно разделить на две отдельные.cs-файлы частных классов или структур. Один из.cs-файлов должен содержать подпись метода, а другие файлы могут содержать опциональное реализация части метода. Объявление и реализация метода должны содержать ключевое слово partial.

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 содержит его реализацию. Компилятор будет объединять все части в одну при компиляции.

Он требует включения подписи частичного метода, но не требует предоставления реализации. Если вызывается метод, но он не реализован, то не будет ошибок компиляции или выполнения.

Правила частичных методов

  • Частичные методы должны использовать ключевое слово partial и должны возвращать void.

  • Частичные методы могут иметь in или ref параметры без out.

  • Частичные методы являются имплицитно частными методами, поэтому они не могут быть виртуальными.

  • Частичные методы могут быть статическими методами.

  • Частичные методы могут быть обобщёнными методами.