Статические методы.

Объявление методов.

Тема 9. Методы

Какбыло отмечено ранее С# поддерживает большой набор функций-членов, которые имеют различные имена и предназначены для разных целей. Тем неменее, все они содержат блоки операторов, которые исполняются при вызове точно также, как это происходит для стандартного метода.

Методы можно разделить на две основные группы — методы экземпляра (определенные без ключевого слова static) , которые принадлежат группе функций экземпляра и статические методы с ключевым словом static, которые принадлежат к группе статических функций.

Метод экземпляра исполняется для конкретного объекта, а статический метод - для класса, поэтому при вызове последнего применяется имя класса, а не объекта.Все объекты одного класса исполь­зуют одну копию метода экземпляра.

Определение метода состоит из заголовка и тела метода. В заголовке указываются важные атрибуты, определяющие, как другие части про­граммы осуществляют доступ к методу. Тело метода состоит из операторов, выполняю­щихся при его вызове.

Уровень доступа к методу определяется необязательным спецификатором в его за­головке.

На данный момент применялись два из возможных спецификаторов: public иprivate,public указывает, что к методу имеет доступ любая часть программы, a privateограничивает его применение за пределами класса.

Приведем синтаксический блок применения метода.

Метод ::=

<3аголовок_метода>

<Тело_метода>

где

<3аголовок_метода>::=[<Спецификаторы_метода>] <Тип_возвращаемого_значения> <Идентификатор метода> ([<Список_формальных_параметров>])

 

< Тело_метода>::=

{

<Операторы>

}

<Спецификаторы_метода>

::=<Спецификатор_доступности>

<Спецификатор_доступности>

::=public

::=private

<Тип_возвращаемого_значения>

::=void

::=<Тип>

Вызов метода состоит из его имени, за которым следует пара круглых скобок со спис­ком аргументов, последний должен соответствовать списку формальных параметров, определенных в заголовке метода.

Привести пример.

Известно, что исполнение программы в среде .NET начинается с вызова метода Main(). Среда исполнения не создает никаких объектов, поэтому Main() должен вызы­ваться независимо от них. Объявление метода Main() статическим указывает, что он принадлежит классу. Тем самым, среда исполнения вызывает Main () непосредственно через имя класса.

Статический метод можно вызвать тремя способами:

1. Из объекта класса, которому он принадлежит. В этом случае префикс (имя класса или объекта) не нужен.

class myClass

{

public static void Average(…)

{

….

}

…Average()…

}

. I

2. Извне данного класса.

При этом существуют две возможности:

1. Если существует объект класса, где метод определен, вызов последнего состоит из имени объекта, операции уточнения и имени метода:

myClass A = new myClass();

…..

A.Average(…)

2. Независимо от существования объектов класса, а котором метод определен, он вызывается для класса посредством операции уточнения:

...myClass.Average(. ..)...

В вызоае метода предпочтительнее использовать имя класса (myClass.Average(...)), а не объекта A.Average(...) поскольку первый вариант четко указывает, что вызывается статический метод.