Метод 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);

Дополнительные сведения см. в разделе Разделяемые классы и методы.

См. также