Метод – это поименованный функциональный элемент класса, предназначенный для работы с данными и методами данного класса.
Методы определяют набор действий, которые доступны классу (часто говорят, что они определяют поведение класса).
Метод описывается один раз, а может вызываться для различных объектов класса столько раз, сколько необходимо.
Общий формат записи методов класса имеет следующий вид:
[ атрибуты ] [ спецификаторы ] тип метода имя метода ([ параметры ])
{тело метода}
Например,
static void Main(string[] args)
{ }
Наиболее часто встречаемые спецификаторы это private, public и static.
Любые методы класса, объявленные со спецификаторомprivate, доступны только в методах данного класса.
Спецификатор public делает метод доступным в любом месте программы.
Спецификатор static означает, что к методу можно обращаться «на уровне класса» не создавая объект класса – это очень важно, так как в данной дисциплине мы будем очень часто использовать статические методы.
Другими методами доступными программе без создания объекта класса являются конструкторы класса (они и создают объект).
|
|
Доступ к остальным методам возможен только после создания объекта класса.
Если спецификатор не указан то (по умолчанию) считается, что данный метод класса имеет спецификатор private.
Тип метода может задаваться любым определенным в программе или стандартным типом языка C# или void – без типа. Например:
int kol(int a) { … }
public double sym(out float r) { … }
public void poisk(ref float s) { … }
public int funkcij(int a, out int b, params int[] c) { … }
Если задан тип метода (кроме void), то последним оператором тела метода должен быть оператор return, возвращающий результат работы метода. При этом метод необходимо присваивать некоторой переменной или использовать как выражение в операторах языка C#. Часто такие методы называют функциями.
Если перед методом указан тип void, то метод не должен возвращать результат своей работы с помощью оператора return (оператор return в этом случае отсутствует в теле метода). Часто такой метод называют процедурой – ее не надо присваивать переменной, а можно записывать как отдельную подпрограмму – процедуру (имя метода с указанием в круглых скобках ее параметров).
Имя метода – идентификатор, определяемый программистом. Желательно в имя метода закладывать смысловое назначение метода, например, sym, max, poisk и т.д.
Параметры метода (формальные параметры) предназначены для обмена данными между методом и программой. Часто параметры метода называют средством «настройки» метода на выполнение необходимого алгоритма.
В языке С# различают следующие параметры методов:
– параметры-значения (входные параметры, т.е. получаемые методом);
|
|
– выходные-параметры (помечаются служебным словом out);
– параметры-ссылки (помечаются служебным словом ref);
– параметры-массивы (помечаются служебным словом params).
Параметры-значения не имеют помечающего служебного слова.
Параметры метода класса разделяются запятыми. Параметр-массив в методе может быть только один и должен быть последним в списке параметров.
Если в методе объявлены параметры - значения, то это означает, что метод получает в свое распоряжение копии некоторых переменных. Метод может изменять значения этих копий, но их оригинал (в программе) остается неизменным. По окончании работы метода параметры - значения удаляются из памяти компьютера.
Выходные - параметры метода предназначены для передачи результатов работы метода в программу. В теле метода обязательно должны находиться операторы присваивания выходным - параметрам некоторых значений, иначе выдается сообщение об ошибке во время компиляции программы.
Если в методе объявлены параметры - ссылки, то фактически метод получает в свое распоряжение адреса соответствующих переменных и может их использовать по своему алгоритму (читать или писать новые значения).
Объявленные в методе параметры - массивы предназначены для работы с произвольным числом фактических переменных. При этом формальному параметру, стоящему за служебным словом params ставится в соответствие массив произвольной длины данных.
Таким образом, через свои параметры метод может, как получать необходимые значения (параметры - значения и параметры - ссылки), так и возвращать результаты своей работы (выходные-параметры и параметры -ссылки).
Тело метода содержит фрагмент кода программы, реализующий некоторый алгоритм. При этом метод выступает как некоторый шаблон действия с формальными параметрами. В программе вместо формальных параметров необходимо использовать реальные переменные – фактические параметры и шаблон действия метода будет применяться для реальных переменных.