Top.Mail.Ru

Язык С#. Разделяемый тип

Определения разделяемых типов позволяют разделять определения для классов, структур и интерфейсов на несколько файлов. Для определения разделяемого типа используется ключевое слово partial.

Ключевое слово partial указывает на то, что другие части класса, структуры или интерфейса могут быть определены в пространстве имен. Все части должны использовать ключевое слово partial. Для формирования окончательного типа все части должны быть доступны во время компиляции. Все части должны иметь одинаковые специальные возможности, например public, private и т.д.

Если какая-либо из частей объявлена абстрактной, то весь тип будет считаться абстрактным. Если какая-либо из частей объявлена запечатанной, то весь тип будет считаться запечатанным. Если какая-либо из частей объявляет базовый тип, то весь тип будет наследовать данный класс.

Все части, указывающие базовый класс, должны быть согласованы друг с другом, а части, не использующие базовый класс, все равно наследуют базовый тип. Части могут указывать различные базовые интерфейсы, и окончательный тип будет реализовывать все интерфейсы, перечисленные во всех разделяемых объявлениях. Любые члены класса, структуры или интерфейса, объявленные в разделяемом объявлении, доступны для всех остальных частей. Окончательный тип представляет собой комбинацию всех частей, выполненную во время компиляции.

ВНИМАНИЕ! Модификатор partial нельзя использовать для объявлений делегата или перечисления.

ПРИМЕР:

В File1.cs

namespace PC

{

    partial class A

    {

        int num = 0;

        void MethodA() { }

        partial void MethodC();

    }

}

В File2.cs

namespace PC

{

    partial class A

    {

        void MethodB(){}

        partial void MethodC() { }

    }

}

Существует несколько ситуаций, при которых желательно разделение определения класса:

  • При работе над большими проектами распределение класса между различными файлами позволяет нескольким программистам работать с ним одновременно.
  • При работе с использованием автоматически создаваемого источника код можно добавлять в класс без повторного создания файла источника. Система Visual Studio использует этот подход при создании форм Windows Forms, программы оболочки веб-службы и т.д. Можно создать программу, использующую эти классы, без необходимости изменения файла, созданного системой Visual Studio.