Книга: 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.

Оглавление книги


Генерация: 0.781. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз