Главная » Просмотр файлов » 1629295407-c61bfe4caba98380ea3e7cdae6295416

1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200), страница 27

Файл №846200 1629295407-c61bfe4caba98380ea3e7cdae6295416 (Шилдт Герберт - Полный справочник по C#) 27 страница1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200) страница 272021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 27)

Рассмотрим, например, следующий метод:public void myMeth() {int i;}for(i=0; i<10; i++) {if(i == 5) return; // Прекращение выполнения// метода при i = 5.Console.WriteLine();}Здесь цикл for будет работать при значениях i в диапазоне только от 0 до 5,поскольку, как только значение i станет равным 5, будет выполнен возврат из методаmyMeth().Метод может иметь несколько инструкций return.

Например, выход из методаpublic void myMeth() {//...if(done) return;//...if(error) return;}произойдет либо в случае его корректного завершения, либо при возникновенииошибки. Однако наличие слишком большого количества точек выхода из метода можетдеструктурировать код. Поэтому, несмотря на допустимость их множественногоприменения, следует все же использовать эту возможность с большой осторожностью.Глава 6. Введение в классы, объекты и методы137Итак, завяжем “узелок на память”: выход из void-метода может быть осуществлендвумя способами: по достижении закрывающей фигурной скобки или при выполненииинструкции return.Возврат значенияХотя void-методы — не редкость, большинство методов все же возвращаютзначение.

И в самом деле, способность возвращать значение — одно из самых полезныхкачеств метода. Мы уже рассматривали пример возврата значения методом в главе 3, когдаиспользовали метод Math.Sqrt() для получения квадратного корня.Значения, возвращаемые методами, используются в программировании по-разному. Водних случаях (как в методе Math.Sqrt()) возвращаемое значение является результатомвычислений, в других — оно просто означает, успешно или нет выполнены действия,составляющие метод, а в третьих — оно может представлять собой код состояния. Однаконезависимо от цели применения, использование значений, возвращаемых методами,является неотъемлемой частью C#-программирования.Методы возвращают значения вызывающим их процедурам, используя следующуюформу инструкции return:return значение;Здесь элемент значение и представляет значение, возвращаемое методом.Способность методов возвращать значения можно использовать для улучшенияреализации метода areaPerPerson(). Вместо того чтобы отображать значение площади,которая приходится на одного человека, метод areaPerPerson() будет теперьвозвращать это значение, которое можно использовать в других вычислениях.

Вследующем примере представлен модифицированный вариант метода areaPerPerson(),который возвращает значение площади, приходящейся на одного человека, а не отображаетего (как в предыдущем варианте).// Демонстрация возврата значения методом areaPerPerson().using System;class Building {public int floors; // количество этажейpublic int area; // общая площадь зданияpublic int occupants; // количество жильцов}// Возврат значения площади, которая// приходится на одного человека.public int areaPerPerson() {return area / occupants;}// Использование значения от метода areaPerPerson().class BuildingDemo {public static void Main() {Building house = new Building();Building office = new Building();int areaPP; // Площадь, которая приходится// на одного человека.// присваиваем значения полям в объекте house.house.occupants = 4;house.area = 2500;house.floors = 2;138Часть I.

Язык C#// Присваиваем значения полям в объекте office.office.occupants = 25;office.area = 4200;office.floors = 3;// Получаем для объекта house площадь, которая// приходится на одного человека.areaPP = house.areaPerPerson();Console.WriteLine("Дом имеет:\n " +house.floors + " этажа\n " +house.occupants + " жильца\n " +house.area +" квадратных футов общей площади, из них\n " +areaPP + " приходится на одного человека");Console.WriteLine();// Получаем площадь для объекта office, которая// приходится на одного человека.areaPP = office.areaPerPerson();Console.WriteLine("Офис имеет:\n " +office.floors + " этажа\n " +office.occupants + " работников\n " +office.area +" квадратных футов общей площади, из них\n " +areaPP + " приходится на одного человека");}}Результаты выполнения этого варианта программы аналогичны предыдущим.Обратите внимание на вызов метода areaPerPerson(): его имя находится справаот оператора присваивания.

В левой части стоит переменная, которая и получает значение,возвращаемое методом areaPerPerson(). Таким образом, после выполненияинструкцииareaPP = house.areaPerPerson();значение площади, приходящейся на одного человека для объекта house, будет сохраненов переменной areaPP.Обратите также внимание на то, что метод areaPerPerson() имеет в этомпримере другой тип возвращаемого значения, а именно тип int.

Это означает, что методвозвращает автору вызова целое число. Тип значения, возвращаемого методом, — оченьважная характеристика метода, поскольку тип данных, возвращаемых методом, долженбыть совместимым с типом возвращаемого значения, указанного в заголовке определенияметода. Следовательно, если вы хотите, чтобы метод возвращал данные типа double, приего определении в качестве типа возвращаемого значения следует указать double.Несмотря на корректность предыдущей программы, ее эффективность оставляетжелать лучшего. В частности, нет необходимости в использовании переменной areaPP.Вызов метода areaPerPerson() можно реализовать непосредственно в инструкциивызова метода WriteLine();Console.WriteLine("Дом имеет:\n " +house.floors + " этажа\n " +Глава 6.

Введение в классы, объекты и методы139house.occupants + " жильца\n " +house.area + " общей площади, из них\n " +house.areaPerPerson() +" приходится на одного человека");В этом случае при вызове метода WriteLine() автоматически вызывается методhouse.areaPerPerson(), и возвращаемое им значение передается методуWriteLine(). Более того, теперь обращение к методу house.areaPerPerson()можно использовать везде, где необходимо значение площади для объекта классаBuilding, которая приходится на одного человека.

Например, в следующей инструкциисравниваются такие значения площадей двух зданий.if(b1.areaPerPerson() > b2.areaPerPerson())Console.WriteLine("В здании b1 больше места для каждого человека.");Использование параметровПри вызове методу можно передать одно или несколько значений.

Как упоминалосьвыше, значение, передаваемое методу, называется аргументом. Переменная внутри метода,которая принимает значение аргумента, называется параметром. Параметры объявляютсявнутри круглых скобок, которые следуют за именем метода. Синтаксис объявленияпараметров аналогичен синтаксису, применяемому для переменных. Параметр находится вобласти видимости своего метода, и, помимо специальной задачи получения аргумента,действует подобно любой локальной переменной.Перед вами простой пример использования метода с параметром.

В классе ChkNumопределен метод isPrime, который возвращает значение true, если переданное емузначение является простым, и значение false в противном случае. Следовательно, методisPrime возвращает значение типа bool.// Простой пример использования параметра.using System;class ChkNum {// Метод возвращает true, если x - простое число.public bool isPrime(int x) {for(int i=2; i < x/2 + 1; i++)if((x %i) == 0) return false;}}return true;class ParmDemo {public static void Main() {ChkNum ob = new ChkNum();for(int i=1; i < 10; i++)if(ob.isPrime(i)) Console.WriteLine(i +" простое число.");else Console.WriteLine(i + " не простое число.");}}Эта программа генерирует следующие результаты:140Часть I.

Язык C#123456789простое число.простое число.простое число.не простое число.простое число.не простое число.простое число.не простое число.не простое число.В этой программе метод isPrime вызывается девять раз, и каждый раз емупередается новое значение. Рассмотрим этот процесс более внимательно. Во-первых,обратите внимание на то, как происходит обращение к методу isPrime. Передаваемыйаргумент указывается между круглыми скобками. При первом вызове метода isPrime емупередается значение 1.

Перед началом выполнения этого метода параметр x получитзначение 1. При втором вызове аргумент будет равен числу 2, а значит, и параметр получитзначение 2 и т.д. Важно то, что значение, переданное как аргумент при вызове функцииisPrime, представляет собой значение, получаемое параметром x.Метод может иметь более одного параметра.

В этом случае достаточно объявитькаждый параметр, отделив его от следующего запятой. Расширим, например, уже знакомыйнам по предыдущей программе класс ChkNum, добавив в него метод lcd(), которыйвозвращает наименьший общий знаменатель (least common denominator) для двухпередаваемых ему значений.// Добавляем метод, который принимает два аргумента.using System;class ChkNum {// Метод возвращает true, если x - простое число.public bool isPrime(int x) {for(int i=2; i < x/2 + 1; i++)if((x %i) == 0) return false;return true;}// Метод возвращает наименьший общий знаменатель.public int lcd(int a, int b) {int max;if(isPrime(a) | isPrime(b)) return 1;max = a < b ? a : b;for(int i=2; i < max/2 + 1; i++)if(((a%i) == 0) & ((b%i) == 0)) return i;}}return 1;class ParmDemo {public static void Main() {ChkNum ob = new ChkNum();int a, b;for(int i=1; i < 10; i++)Глава 6.

Введение в классы, объекты и методы141if(ob.isPrime (i)) Console.WriteLine(i +" простое число.");else Console.WriteLine(i + " не простое число.");a = 7;b = 8;Console.WriteLine("Наименьший общий знаменатель для " +a + " и " + b + " равен " +ob.lcd(a, b));}}a = 100;b = 8;Console.WriteLine("Наименьший общий знаменатель для " +a + " и " + b + " равен " +ob.lcd(a, b));a = 100;b = 75;Console.WriteLine("Наименьший общий знаменатель для " +a + " и " + b + " равен " +ob.lcd(a, b));Обратите внимание на то, что при вызове метода lcd() аргументы такжеразделяются запятыми. Вот результаты выполнения этой программы:1 простое число.2 простое число.3 простое число.4 не простое число.5 простое число.6 не простое число.7 простое число.8 не простое число.9 не простое число.Наименьший общий знаменатель для 7 и 8 равен 1Наименьший общий знаменатель для 100 и 8 равен 2Наименьший общий знаменатель для 100 и 75 равен 5При передаче методу нескольких параметров каждый из них должен сопровождатьсяуказанием собственного типа, причем типы параметров могут быть различными.

Характеристики

Тип файла
PDF-файл
Размер
5,05 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее