Разделяемые (partial
) классы, методы и свойства в C# позволяют разбивать определение одного типа или метода на несколько файлов. Это особенно полезно при работе с большими проектами, автогенерируемым кодом и командной разработкой.
Разделяемые классы
Разделяемый класс (partial class
) — это класс, определение которого может находиться в нескольких файлах. Все части должны иметь модификатор partial
и объединяются компилятором в один класс.
Пример использования
Файл Person1.cs
:
public partial class Person
{
public string Name { get; set; }
}
Файл Person2.cs
:
public partial class Person
{
public int Age { get; set; }
}
Файл Program.cs
:
using System;
class Program
{
static void Main()
{
Person person = new Person { Name = "Алексей", Age = 30 };
Console.WriteLine($"Имя: {person.Name}, Возраст: {person.Age}");
}
}
Консольный вывод
Имя: Алексей, Возраст: 30
Разделяемые методы
Разделяемые (partial
) методы позволяют объявить метод в одной части класса и определить его в другой. Если реализация отсутствует, компилятор просто игнорирует его объявление.
Пример использования
Файл PartialMethodExample.cs
:
public partial class Example
{
partial void DisplayMessage();
}
Файл PartialMethodImplementation.cs
:
using System;
public partial class Example
{
partial void DisplayMessage()
{
Console.WriteLine("Вызван разделяемый метод");
}
public void Run()
{
DisplayMessage();
}
}
Файл Program.cs
:
class Program
{
static void Main()
{
Example example = new Example();
example.Run();
}
}
Консольный вывод
Вызван разделяемый метод
Разделяемые свойства
Разделяемые (partial
) свойства работают аналогично методам и позволяют объявить свойство в одной части класса, а определить его в другой.
Пример использования
Файл PartialProperty.cs
:
public partial class Data
{
public partial string Value { get; set; }
}
Файл PartialPropertyImplementation.cs
:
public partial class Data
{
public partial string Value { get; set; } = "Разделяемое свойство";
}
Файл Program.cs
:
using System;
class Program
{
static void Main()
{
Data data = new Data();
Console.WriteLine(data.Value);
}
}
Консольный вывод
Разделяемое свойство
Когда использовать разделяемые классы, методы и свойства
- При автогенерации кода (например, в инструментах дизайнера UI).
- Для разбиения больших классов на логические части.