Книга: C# 4.0: полное руководство
Частичные методы
Частичные методы
Как пояснялось в предыдущем разделе, с помощью модификатора 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() {
Console.WriteLine("{0}, {1}", X, Y);
}
}
partial class XY {
public int Y { get; set; }
// Вызвать частичный метод,
public void ShowXY() {
Show();
}
}
class Test {
static void Main() {
XY xy = new XY(1, 2);
xy.ShowXY();
}
}
Обратите внимание на то, что метод Show()
объявляется в одной части класса XY
, а реализуется в другой его части. В реализации этого метода выводятся значения координат X и Y. Это означает, что когда метод Show()
вызывается из метода ShowXY()
, то данный вызов действительно имеет конкретные последствия: вывод значений координат X и Y. Но если закомментировать реализацию метода Show()
, то его вызов из метода ShowXY()
ни к чему не приведет.
Частичным методам присущ ряд следующих ограничений. Они должны возвращать значение типа void
. У них не может быть модификаторов доступа и они не могут быть виртуальными. В них нельзя также использовать параметры out
.
- Небезопасный код
- Обнуляемые типы
- Основы применения обнуляемых типов
- Применение обнуляемых объектов в выражениях
- Оператор ??
- Обнуляемые объекты, операторы отношения и логические операторы
- Частичные типы
- Частичные методы
- Создание объектов динамического типа
- Возможность взаимодействия с моделью СОМ
- Дружественные сборки
- Разные ключевые слова