Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 43

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 43 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 432019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Но в любом случае метод доЛжен возвратить наименьшее из этих значений. Такой метод нельзя создать, используя обычные параметры. Вместо этого придется воспользоваться специальным типом параметра, обозначающим произвольное число параметров. И это делается с помощью создаваемого параметра типа рагавя. Для объявления массива параметров, способного принимать от нуля до нескольких аргументов, служит модификатор рагавя.

Число элементов массива параметров будет равно числу аргументов, передаваемых методу. А для получения аргументов в программе организуется доступ к данному массиву. Ниже приведен пример программы, в которой модификатор рагавя используется для создания метода Мгпча1 ( ), возвращающего наименьшее среди ряда заданных значений. Продемонстрировать применение модификатора рвгввя. оягпе Буягев) с1аяя Мгп ( роЬ11с 1пг М1пуа1(рвгашв ьпя() повя) ( ьпг. го 11(повн.ьепесп == 0) Сопяо1е.нг1яещпе("Ошибка: нет аргументов.") гегогп 0; ) в = повя(0)г гог(ьпг 1=1) 1 < повя.ьепчяп) 11(повя(1) < в) в = повя(1); гегогп в; с1азя РвгавяОево ( ясаягс чо1б Ма1п() ( Мьп оЬ = пен Мтп(); 1пя вгп) 1пс а = 10, Ь = 20; Вызвать метод с двумя значениями.

вгп = оЬ.Мьпча1 (а, Ь) г Сопво1е.игтяеььпе("Наименьшее значение равно " + в1п) Вызвать метод с тремя значениями. вьп = оЬ .М1пуа1 (а, Ь, -1 ) ) 230 Часть (. Язык С() Сопво1е.иг1певьпе("Наименьшее значение равно " ь шьп) // Вызвать метод с пятью значениями. шгп = оЬ.Мьпуа1(18, 23, 3, 14, 25); Сопао1е.нгьгеььпе("Наименьшее значение равно " 4 шьп) Вызвать метод с массивом целых значений. ьпь() агЧв = ( 45, 67, 34, 9, 112, 8 ); шгп = оЬ.Мгпуа1(агчв)/ Сопво1е.игзьеььпе("Наименьшее значение равно " + шьп) При выполнении этой программы получается следующий результат. Наименьшее значение равно 10 Наименьшее значение равно -1 Наименьшее значение равно 3 Наименьшее значение равно 8 Всякий раз, когда вызывается метод МзпЧа1 (), ему передаются аргументы в массиве пцшз.

Длина этого массива равна числу передаваемых аргументов. Поэтому с помощью метода М1пЧа1 () можно обнаружить наименьшее среди любого числа значений. Обратите внимание на последний вызов метода М1пЧа1 () . Вместо отдельных значений в данном случае передается массив, содержащий ряд значений. И такая передача аргументов вполне допустима.

Когда создается параметр типа рагашз, он воспринимает список аргументов переменной длины или же массив, содержащий аргументы. Несмотря на то что параметру типа рагашз может быть передано любое число аргументов, все они должны иметь тип массива, указываемый этим параметром. Например, вызов метода мзпча1 ( ) шьп = оЬ.Мьпуа1(1, 2.2); // Неверно! считается недопустимым, поскольку нельзя автоматически преобразовать тип с)оцЬ1е (значение 2.2) в тип 1п с, указанный для массива пцшв в методе МЫЧа 1 ( ) .

Пользоваться модификатором рагашв следует осторожно, соблюдая граничные условия, так как параметр типа рагашв может принимать любое число аргументов— даже нулевое! Например, вызов метода М1пЧа1 () в приведенном ниже фрагменте кода считается правильным с точки зрения синтаксиса С)). ш1п = оЬ.М1пЧа1(); // нет аргументов шгп = оЬ.Мьпуа1(3); // 1 аргумент Именно поэтому в методе М1пЧа1 () организована проверка на наличие в массиве витя хотя бы одного элемента перед тем, как пытаться получить доступ к этому элементу. Если бы такой проверки не было, то при вызове метода МзпЧа1 () без аргументов возникла бы исключительная ситуация во время выполнения. (Подробнее об исключительных ситуациях речь пойдет в главе 13.) Больше того, код метода мзпча1 ( ) написан таким образом, чтобы его можно было вызывать с одним аргументом.

В этом случае возвращается этот единственный аргумент. У метода могут быть как обычные параметры, так и параметр переменной длины. В качестве примера ниже приведена программа, в которой метод НЬоыАгов () Глава 8. Подробнее о методах и классах 231 принимает один параметр типа ягг1пд, а также целочисленный массив в качестве параметра типа рагавя. // Испольэовать обычный параметр вместе с параметром // переменной длины типа рагавя. цяьпд Яуясев; с1аяя МуС1аяя ( рцььлс чоьб ялонлгоя(ясглпо вяя, рагавя ьпг() пцвя) ( Сопяо1е.нг1се(вяо + ": "); Гогеасл(1пс 1 ьп пцвя) Сопяо1е.Хт1се(1 + " ") Сопяо1е.Хтлге11пе (); с1аяя Ратавяоево2 ( ягаоьс чоьд Маьп() ( МуС1аяя оЬ = пен МуС1аяя (): оЬ.ЯЬонлтчя("Это ряд целых чисел", 1, 2, 3, 4, 5); оЬ.ЯЬонлтдя("А это еве два целых числа 17, 20); Вот какой результат дает выполнение этой программы. Это ряд целых чисел: 1, 2, 3, 4, 5 А это еые Даа цеЛЫХ чИСЛа: 17, 20 В тех случаях, когда у метода имеются обычные параметры, а также параметр переменной длины типа ра гав я, он должен быть указан последним в списке параметров данного метода.

Но в любом случае параметр типа ра гавя должен быть единственным. Возврат объектов из методов Метод может возвратить данные любого типа, в том числе и тип класса. Ниже в качестве примера приведен вариант класса йесг, содержащий метод Еп1агце (), в котором строится прямоугольник с теми же сторонами, что и у вызывающего объекта прямоугольника, но пропорционально увеличенными на указанный коэффициент. // Воэвратить объект иэ метода. ця1пд Яуясев; с1аяя Весь ( ьпг н1оСЬ; лпг ЬеьВЬЮ 232 Часть!.

Язык С№ рцЬ11с Ресг(1пс н, гпс Ь) ( нгСТЬ = н; Ье 0ЬТ = Ь! ) рцЬ1тс тпС Агеа() ( гепцгп нгбСЬ * ЬегдЬТ; ) рсЬ11с чогб ЕЬон() ( СОПЭО1Е.ХГ1ТЕЬ1ПЕ(НТССЬ + " " + ЬЕ10ЬС) ) /* Метод возвращает прямоугольник со сторонами, пропорционально увеличенными на указанный коэффициент по сравнению с вызывающим обьектом прямоугольника. */ рцЬ11с ВесТ Еп1асэе(гпС Гаспог) гетцсп пем Весс(н1г)сь * гассет, ьеьчьс * гассог)г с1авэ ВеСОЬ2 ( эСаТ1с чо1г( Ма1п() ( Весо г1 = лен Весп(4, 5) Сопэо1е.ХТ1Се("Размеры прямоугольника Т1: Т1.БЬон()) сопэо1е.хгссеьгпе("площадь прямоугольника Т1: " ь Т1.Агеа())1 Сопэо1Е.ХТТТе11пе() // Создать прямоугольник в два раза больший прямоугольника г1. Весг г2 = г1.ЕЬ1агче(2)г сопэо1е.хсгсе("Размеры прямоугольника г2: ")) Т2.8Ьон()г Сопэо1е.игьтеъьпе("Площадь прямоугольника Т2: " + Т2.АГеа())г ) Выполнение этой программы дает следующий результат.

Размеры прямоугольника Т1: 4 5 Площадь прямоугольника Т1: 20 Размеры прямоугольника г2: 8 10 Площадь прямоугольника г2: 80 Когда метод возвращает объект, последний продолжает существовать до тех пор, пока не останется ссылок на него. После этого он подлежит сборке как "мусор".

Следовательно, объект не уничтожается только потому, что завершается создавший его метод. Глава 8. Подробнее о методах и классах 233 Одним из практических примеров применения возвращаемых данных типа объектов служит фабрика класса, которая представляет собой метод, предназначенный для построения объектов его же класса.

В ряде случаев предоставлять пользователям класса доступ к его конструктору нежелательно из соображений безопасности или же потому, что построение объекта зависит от некоторых внешних факторов. В подобных случаях для построения объектов используется фабрика класса. Обратимся к простому примеру. // Использовать фабрику класса. пв1пд Вуягев) с1аяя МуС1авя гпг а, Ь; // закрытые члены класса // Создать фабрику длв класса Мус1авв. роьггс Мус1аяв Гассогу(гпг 1, гпг 1) ( МуС1авя С вЂ” пеи МуС1авв (); с.а = гг с.ь гесогп Г; // возвратить объект ! роЬ11с чогг( ЯЬои() ( сопво1е.иггбеьгпе("а и ь: " е а т " " е ь); ! ) сгаяя МакеОЬбесгв ( ягас1с чо1б Ма1п() ( МуС1авя оЬ = пею Мус1аяя()г гпв // Сформировать объекты, используя фабрику класса. Еог(1=0, 9=10; 1 < 10г 1т+, 1 †) ( МуС1авя апоСЛегбь = оЬ.Гасвогу(1, 1); // создать объект апосьегбь.зьои(); ) Сопяо1е.нгггеъзпе()) ) ) Вот к какому результату приводит выполнение этого кода.

аиь! 010 аиЬ; 19 аиЬ: 2 В аиь: зт аиЬ: 4 б аиЬ: 55 аиЬ: 64 234 Часть (. язык С(г аиЬ: 73 аиЬ:82 аиЬ: 9 1 Рассмотрим данный пример более подробно. В этом примере конструктор для класса МуС1аяя не определяется, и поэтому доступен только конструктор, вызываемый по умолчанию. Это означает, что значения переменных а и Ь нельзя задать с помощью конструктора. Но в фабрике класса Гассогу () можно создать объекты, в которых задаются значения переменных а и Ь.

Более того, переменные а и Ь являются закрытыми, и поэтому их значения могут быть заданы только с помощью фабрики класса Гасгогу () . В методе Мауп () получается экземпляр объекта класса МуС1аяя, а его фабричный метод используется в цикле Гог для создания десяти других объектов. Ниже приведена строка кода, в которой создаются эти объекты.

Му01аяя апоГЬегОЬ = оЬ.Гассогу(1, 1)г // созДать объект На каждом шаге итерации цикла создается переменная ссылки на объект апогпегОЬ, которой присваивается ссылка на объект, формируемый фабрикой класса. По завершении каждого шага итерации цикла переменная апогйегОЬ выходит за пределы области своего действия, а объект, на который она ссылается, утилизируется. Возврат массива из метода В С() массивы реализованы в виде объектов, а это означает, что метод может также возвратить массив. (В этом отношении Ся отличается от С++, где не допускается возврат массивов из методов.) В качестве примера ниже приведена программа, в которой метод ГупбГасгогя () возвращает массив, содержащий множители переданного ему аргумента.

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

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

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

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