Что такое partial class в C#?

«Что такое partial class в C#?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Partial class (частичный класс) в C# — это возможность разделить определение одного класса, структуры, интерфейса или метода на несколько исходных файлов. Это особенно полезно при работе с автоматически генерируемым кодом, чтобы отделить пользовательские изменения от машинного кода.

Ключевые правила:

  • Все части должны использовать модификатор partial.
  • Все части должны находиться в одном пространстве имен (namespace) и одной сборке (assembly).
  • Во время компиляции все части объединяются в один тип.

Пример разделения класса:

// File1.cs - Автоматически генерируемый код (например, дизайнером формы)
public partial class UserForm
{
    private void InitializeComponent()
    {
        // Автоматически созданная разметка
    }
}

// File2.cs - Ручные правки разработчика
public partial class UserForm
{
    public UserForm()
    {
        InitializeComponent();
        this.Load += OnFormLoaded;
    }

    private void OnFormLoaded(object sender, EventArgs e)
    {
        // Пользовательская логика загрузки
    }
}

Основные сценарии использования:

  1. Разделение сгенерированного и ручного кода (WinForms, WPF, Entity Framework, веб-сервисы).
  2. Организация больших классов — логически группировать методы по файлам (например, CustomerRepository.Queries.cs, CustomerRepository.Commands.cs).
  3. Параллельная работа — несколько разработчиков могут работать над разными частями одного класса, минимизируя конфликты слияния в системе контроля версий.