Рассмотрим пример разделения простого класса, содержащего координаты ХУ, на три отдельных файла. Ниже приведено содержимое первого файла.

partial class XY {

public XY(int a, int b) {

X =• a;

Y = b;

}

}

Далее следует содержимое второго файла.

partial class XY {

public int X { get; set; }

}

И наконец, содержимое третьего файла.

partial class XY {

public int Y { get; set; }

}

В приведенном ниже файле исходного текста программы демонстрируется применение классаXY.

// Продемонстрировать определения частичного класса.

using System;

class Test {

static void Main() {

XY xy = new XY (1, 2);

Console.WriteLine(xy.X +    + xy.Y);

}

}

Для того чтобы воспользоваться классомXY,необходимо включить в компиляцию все его файлы. Так, если файлы классаXYназываютсяxyl. cs, ху2 . csихуЗ . cs,а классTestсодержится в файлеtest. cs,то для его компиляции достаточно ввести в командной строке следующее.

csc test.cs xyl.cs xy2.cs xy3.cs

И последнее замечание: в C# допускаются частичные обобщенные классы. Но параметры типа в объявлении каждого такого класса должны совпадать с теми, что указываются в остальных его частях.

Частичные методы

Как пояснялось в предыдущем разделе, с помощью модификатораpartialможно создать класс частичного типа. Начиная с версии 3.0, в C# появилась возможность использовать этот модификатор и для созданиячастичного методав элементе данных частичного типа. Частичный метод объявляется в одной его части, а реализуется в другой. Следовательно, с помощью модификатора partial можно отделить объявление метода от его реализации в частичном классе или структуре.

Главная особенность частйчного метода заключается в том, что его реализация не требуется! Если частичный метод не реализуется в другой части класса или структуры, то все его вызовы молча игнорируются. Это дает возможность определить, но не востребовать дополнительные, хотя и не обязательные функции класса. Если эти функции не реализованы, то они просто игнорируются.

Ниже приведена расширенная версия предыдущей программы, в которой создается частичный методShow (). Этот метод вызывается другим методом,ShowXY (). Ради удобства все части классаXYпредставлены в одном файле, но они могут быть распределены по отдельным фацлам, как было показано в предыдущем разделе.

// Продемонстрировать применение частичного метода.

using System;

partial class XY {

public XY(int a, int b) {

X = a;

Y = b;

}

// Объявить частичный метод, partial void Show();

}

partial class XY {

public int X { get; set; }

// Реализовать частичный метод, partial void Show() {

Перейти на страницу:

Похожие книги