Метод partial (Справочник по C#)
Сигнатура разделяемого метода определяется в одной части разделяемого типа, а его реализация — в другой части этого типа. С помощью разделяемых методов разработчики классов могут при необходимости реализовывать ловушки методов, которые схожи с обработчиками событий. Если реализация не предоставлена, компилятор удаляет сигнатуру во время компиляции. В отношении разделяемых методов применяются следующие условия:
Объявления должны начинаться с контекстного ключевого слова partial.
Сигнатуры в обеих частях разделяемого типа должны совпадать.
Ключевое слово partial
не допускается для конструкторов, завершения, перегруженных операторов, объявлений свойств или объявлений событий.
Разделяемый метод может не иметь реализацию в следующих случаях.
У него нет модификаторов доступа (включая private по умолчанию).
Он возвращает значение void.
У него нет параметров out.
У него нет ни одного из следующих модификаторов: virtual, override, sealed, new или extern.
Любой метод, не соответствующий всем этим ограничениям (например, метод public virtual partial void
), должен предоставлять реализацию.
В следующем примере показан разделяемый метод, определенный в двух частях разделяемого класса:
namespace PM
{
partial class A
{
partial void OnSomethingHappened(string s);
}
// This part can be in a separate file.
partial class A
{
// Comment out this method and the program
// will still compile.
partial void OnSomethingHappened(String s)
{
Console.WriteLine("Something happened: {0}", s);
}
}
}
Разделяемые методы также могут быть удобны в сочетании с генераторами источника. Например, можно определить регулярное выражение, используя следующий шаблон.
[GeneratedRegex("(dog|cat|fish)")]
partial bool IsPetMatch(string input);
Дополнительные сведения см. в разделе Разделяемые классы и методы.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по