Частичные типы и файлы
Разделяйте тип между файлами с помощью частичных классов и структур, а также используйте частичные методы для добавления пользовательской логики в сгенерированный код.
«Частичные типы и файлы» — бесплатный урок C# Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.
Обзор частичных типов
Цель: аккуратно разделять большие типы.
- partial класс/структура: одно пространство имён и одно имя
- Обычно части распределяют по нескольким файлам
- partial методы: необязательные точки расширения внутри частичных типов
Части частичного класса
partial класс можно объявить в нескольких частях. Компилятор объединит их в один тип.
using System;
namespace Demo
{
// Part 1: data
public partial class Person
{
public string Name { get; private set; }
public Person(string name) { Name = name; }
}
// Part 2: behavior
public partial class Person
{
public string Greet() { return "Hi " + Name; }
}
}
public class Program
{
public static void Main(string[] args)
{
Demo.Person p = new Demo.Person("Ada");
Console.WriteLine(p.Greet());
}
}
Частичные методы
partial методы — это точки расширения на этапе компиляции: если метод не реализован, вызов удаляется. В C# 6 они должны не возвращать значение и быть закрытыми.
using System;
namespace Demo
{
public partial class Processor
{
// Partial method: implicitly private, must return void in C# 6
partial void OnProcessed(string item);
public void Run(string item)
{
// do work...
OnProcessed(item); // call hook (removed by compiler if not implemented)
}
}
public partial class Processor
{
// Implementation lives in another part (often another file)
partial void OnProcessed(string item)
{
Console.WriteLine("Processed: " + item);
}
}
}
public class Program
{
public static void Main(string[] args)
{
Demo.Processor p = new Demo.Processor();
p.Run("report");
}
}
Когда использовать partial
Варианты применения:
- Код конструктора или сгенерированный код — в одном файле, а безопасные изменения — в другом.
- Разделение больших типов по возможностям: данные отдельно от поведения.
- Необязательные точки расширения с помощью partial методов.
Частичная структура
С помощью partial можно также разделять структуры; на этапе компиляции результатом будет один тип структуры.
using System;
namespace Demo
{
public partial struct Pair
{
public int A;
}
public partial struct Pair
{
public int B;
public int Sum() { return A + B; }
}
}
public class Program
{
public static void Main(string[] args)
{
Demo.Pair p = new Demo.Pair();
p.A = 2; p.B = 3;
Console.WriteLine("Sum = " + p.Sum());
}
}
Правила partial и советы
Советы:
- Все части должны использовать одно и то же пространство имён, имя и модификатор доступа.
- Сосредоточьтесь на одной задаче в каждом файле (сгенерированный код отдельно от ручного).
- В C# 6 partial методы не возвращают значения и являются закрытыми; делайте их небольшими.
Назначение частичного класса
Повторение
Повторение: используйте partial, чтобы разделять типы между файлами, и добавляйте partial методы для необязательных точек расширения. Храните части в одном пространстве имён и под одним именем, а объединить их поручите компилятору.
Часто задаваемые вопросы
Урок «Частичные типы и файлы» бесплатный?
Да — полный текст урока «Частичные типы и файлы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.
Чему я научусь в уроке «Частичные типы и файлы»?
Разделяйте тип между файлами с помощью частичных классов и структур, а также используйте частичные методы для добавления пользовательской логики в сгенерированный код. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Частичные типы и файлы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- public/internal/protected/private (с примечанием о file)
- Пространства имён, директивы using и глобальные using (примечание)
- Частичные типы и файлы