C# 4.0 полное руководство - 2011
Шрифт:
Для возврата значения из метода в вызывающую часть программы служит следующая форма оператора return:
return значение;
где значение — это конкретное возвращаемое значение.
Используя возвращаемое значение, можно усовершенствовать рассматривавшийся ранее метод AreaPerPerson . Вместо того чтобы выводить величину площади на одного человека, лучше возвратить ее из этого метода. Среди прочих преимуществ такого подхода следует
// Возвратить значение из метода AreaPerPerson.
using System;
class Building {
public int Floors; // количество этажей
public int Are-a; // общая площадь здания
public int Occupants; // количество жильцов
// Возвратить величину площади на одного человека, public int AreaPerPerson {
return Area / Occupants;
}
}
// Использовать значение, возвращаемое методом AreaPerPerson. class BuildingDemo { static void Main {
Building house = new Building;
Building office = new Building;
int areaPP; // площадь на одного человека
// Присвоить значения полям в объекте house, house.Occupants = 4; house.Area = 2500; house.Floors = 2;
// Присвоить значения полям в объекте office, office.Occupants = 25; office.Area = 4200; office.Floors = 3;
// Получить площадь на одного человека в жилом доме. areaPP = house.AreaPerPerson;
Console.WriteLine("Дом имеет:\n " +
house.Floors + " этажа\п " + house.Occupants + " жильца\п " + house.Area +
" кв. футов общей площади, из них\п " + areaPP + " приходится на одного человека");
Console.WriteLine ;
// Получить площадь на одного человека в учреждении. areaPP = office.AreaPerPerson;
Console'. WriteLine ("Учреждение имеет :\n " +
office.Floors + " этажа\п " +
office.Occupants + " работников\п " +
office.Area +
" кв. футов общей площади, из них\п " + areaPP + " приходится на одного человека");
}
}
Эта программа дает такой же результат, как и прежде.
'В данной программе обратите внимание на следующее: когда метод AreaPerPerson вызывается, он указывается в правой части оператора присваивания. А в левой части этого оператора указывается переменная, которой передается значение, возвращаемое методом AreaPerPerson . Следовательно, после выполнения оператора
areaPP = house.AreaPerPerson ;
в переменной areaPP сохраняется величина площади на одного человека в жилом доме (объект house).
Обратите
Несмотря на то что приведенная выше программа верна, она, тем не менее, написана не совсем эффективно. В частности, в ней можно вполне обойтись без переменной areaPP, указав вызов метода AreaPerPerson непосредственно в операторе, содержащем вызов метода WriteLine , как показано ниже.
Console.WriteLine("Дом имеет:\п " +
house.Floors + " этажа\п " + house.Occupants + " жильца\п " + house.Area +
" кв. футов общей площади, из них\п " + house.AreaPerPerson +
" приходится на одного человека");
В данном случае при выполнении оператора, содержащего вызов метода WriteLine , автоматически вызывается метод house . AreaPerPerson , а возвращаемое им значение передается методу WriteLine. Кроме того, вызов метода AreaPerPerson можно использовать всякий раз, когда требуется получить величину площади на одного человека для конкретного объекта типа Building. Например, в приведенном ниже операторе сравниваются величины площади на одного человека для двух зданий.
if(Ы.AreaPerPerson > Ь2.AreaPerPerson)
Console.WriteLine("В здании Ы больше места для каждого человека");
Использование параметров
При вызове метода ему можно передать одно или несколько значений. Значение, передаваемое методу, называется аргументом. А переменная, получающая аргумент, называется формальным параметром, или просто параметром. Параметры объявляются в скобках после имени метода. Синтаксис объявления параметров такой же, как и у переменных. А областью действия параметров является тело метода. За исключением особых случаев передачи аргументов методу, параметры действуют так же, как и любые другие переменные.
Ниже приведен пример программы, в котором демонстрируется применение параметра. В классе ChkNum используется метод Is Prime , который возвращает значение true, если ему передается значение, являющееся простым числом. В противном случае он возвращает значение false. Следовательно, возвращаемым для метода IsPrimeO является тип bool.