Чтение онлайн

на главную - закладки

Жанры

C# 4.0 полное руководство - 2011

Шилдт Герберт

Шрифт:

Console.WriteLine(" " + Area / Occupants +

" приходится на одного человека");

Этот оператор осуществляет вывод величины площади на одного человека, которая получается путем деления общей площади здания (переменной Area) на количество жильцов (переменную Occupants). А поскольку у каждого объекта типа Building имеется своя копия переменных Area и Occupants, то при вызове метода AreaPerPerson в вычислении используются

копии этих переменных, принадлежащие вызывающему объекту.

Метод AreaPerPerson завершается закрывающейся фигурной скобкой. Когда встречается эта скобка, управление передается обратно вызывающей части программы.

Далее проанализируем внимательно следующую строку кода из метода Main .

house.AreaPerPerson ;

В этой строке вызывается метод AreaPerPerson для объекта house. Это означает, что метод AreaPerPerson вызывается относительно объекта, на который ссылается переменная house, и для этой цели служит оператор-точка. Когда метод AreaPerPerson вызывается, ему передается управление программой. А по его завершении управление передается обратно вызывающей части программы, выполнение которой возобновляется со строки кода, следующей после вызова данного метода.

В данном случае в результате вызова house .AreaPerPerson выводится площадь на одного человека в здании, определенном в объекте house. Аналогично, в результате вызова office .AreaPerPerson выводится площадь на одного человека в здании, определенном в объекте office. Таким образом, при каждом вызове метода AreaPerPerson выводится площадь на одного человека для указанного объекта.

В методе AreaPerPerson особого внимания заслуживает следующее обстоятельство: обращение к переменным экземпляра Area и Occupants осуществляется непосредственно, т.е. без помощи оператора-точки. Если в методе используется переменная экземпляра, определенная в его классе, то делается это непосредственно, без указания явной ссылки на объект и без помощи оператора-точки. Понять это нетрудно, если хорошенько подумать. Ведь метод всегда вызывается относительно некоторого объекта его класса. Как только вызов произойдет, объект становится известным. Поэтому объект не нужно указывать в методе еще раз. В данном случае это означает, что переменные экземпляра Area и Occupants в методе AreaPerPerson неявно ссылаются на копии этих же переменных в том объекте, который вызывает метод AreaPerPerson .

ПРИМЕЧАНИЕ

~ Попутно следует заметить, что значение переменной Occupants в методе AreaPerPerson не должно быть равно нулю (это касается всех примеров, приведенных в данной главе). Если бы значение переменной Occupants оказалось равным нулю, то произошла бы ошибка из-за деления на нуль. В главе 13, где рассматриваются исключительные ситуации, будет показано, каким образом в C# отслеживаются и обрабатываются ошибки, которые могут возникнуть

во время выполнения программы.

Возврат из метода

В целом, возврат из метода может произойти при двух условиях. Во-первых, когда встречается фигурная скобка, закрывающая тело метода, как показывает пример метода AreaPerPerson из приведенной выше программы. И во-вторых, когда выполняется оператор return. Имеются две формы оператора return: одна — для методов типа void, т.е. тех методов, которые не возвращают значения, а другая — для методов, возвращающих конкретные значения. Первая форма рассматривается в этом разделе, а в следующем разделе будет пояснено, каким образом значения возвращаются из методов.

Для немедленного завершения метода типа void достаточно воспользоваться следующей формой оператора return, return;

Когда выполняется этот оператор, управление возвращается вызывающей части программы, а оставшийся в методе код пропускается. В качестве примера рассмотрим следующий метод.

public void MyMethO { int i;

for(i=0; i<10; i++) {

if(i == 5) return; // прервать на шаге 5 Console.WriteLine;

}

}

В данном примере выполняется лишь 5 полноценных шагов цикла for, поскольку при значении 5 переменной i происходит возврат из метода.

В методе допускается наличие нескольких операторов return, особенно если имеются два или более вариантов возврата из него. Например:

public void MyMethO {

П ...

if(done) return;

П ...

if (error) return;

}

В данном примере возврат из метода происходит в двух случаях: если метод завершает свою работу или происходит ошибка. Но пользоваться таким приемом программирования следует очень аккуратно. Ведь из-за слишком большого числа точек возврата из метода может нарушиться структура кода.

Итак, напомним еще раз: возврат из метода типа void может произойти при двух условиях: по достижении закрывающей фигурной скобки или при выполнении оператора return.

Возврат значения

Методы с возвратом типа void нередко применяются в программировании, тем не менее, большинство методов возвращает конкретное значение. В действительности способность возвращать значение является одним из самых полезных свойств метода. Возврат значения уже демонстрировался в главе 3 на примере метода Math. Sqrt , использовавшегося для получения квадратного корня.

Возвращаемые значения используются в программировании с самыми разными целями. В одних случаях, как в примере метода Math. Sqrt (), возвращаемое значение содержит результат некоторого вычисления, в других — оно может просто указывать на успешное или неудачное завершение метода, а в третьих — содержать код состояния. Но независимо от преследуемой цели использование возвращаемых значений является неотъемлемой частью программирования на С#.

Поделиться:
Популярные книги

Газлайтер. Том 1

Володин Григорий
1. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 1

(Не)зачёт, Дарья Сергеевна!

Рам Янка
8. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
(Не)зачёт, Дарья Сергеевна!

Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Коллектив авторов
Warhammer Fantasy Battles
Фантастика:
фэнтези
5.00
рейтинг книги
Warhammer: Битвы в Мире Фэнтези. Омнибус. Том 2

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

Мы все умрём. Но это не точно

Aris me
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
Мы все умрём. Но это не точно

Третий. Том 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 3

Архил...? 4

Кожевников Павел
4. Архил...?
Фантастика:
фэнтези
попаданцы
альтернативная история
5.50
рейтинг книги
Архил...? 4

Город Богов 3

Парсиев Дмитрий
3. Профсоюз водителей грузовых драконов
Фантастика:
юмористическое фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Город Богов 3

Подари мне крылья. 2 часть

Ских Рина
Любовные романы:
любовно-фантастические романы
5.33
рейтинг книги
Подари мне крылья. 2 часть

Город воров. Дороги Империи

Муравьёв Константин Николаевич
7. Пожиратель
Фантастика:
боевая фантастика
5.43
рейтинг книги
Город воров. Дороги Империи

Матабар III

Клеванский Кирилл Сергеевич
3. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар III

Мир Возможностей

Бондаренко Андрей Евгеньевич
1. Мир Возможностей
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Мир Возможностей

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Плохой парень, Купидон и я

Уильямс Хасти
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Плохой парень, Купидон и я