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

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

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

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

Следовательно, деструктор объявляется аналогично конструктору, за исключением того, что перед его именем указывается знак "гильда" (-). Обратите внимание на то, что у деструктора отсутствуют возвращаемый тип и передаваемые ему аргументы. Для того чтобы добавить деструктор в класс, достаточно включить его в класс в качестве члена. Он вызывается всякий раз, когда предполагается утилизировать объект его класса. В деструкторе можно указать те действия, которые следует выполнить перед тем, как уничтожать объект. Следует, однако, иметь в виду, что деструктор вызывается непосредственно перед "сборкой мусора". Он не вызывается, например, в тот момент, когда переменная, содержащая ссылку на объект, оказывается за пределами области действия этого объекта. (В этом отношении деструкторы в СФ отличаются от деструкторов в С-)+, где они вызываются в тот момент, когда объект оказывается за пределами области своего действия.) Эго означает, что заранее нельзя знать, когда именно следует вызывать деструктор.

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

Продемонстрировать применение деструктора. оазис Буагеи) о1ава Пеаггоог ( роЫ1о 1пг и) рнЫзо Пеасгног(1пс 1) ( Глава 6. Введение в классы, объекты и методы 173 х !/ Вызывается при утилизации объекта. -Оеаггцсс() ( Сопзо1е.нгьпеъ1пе("уничтожить " + х) ) !/ Создает объект и тут же уничтожает его. рцЬ1ьс чехо Сепегагог(хпс 1) Оезггцсг о = пен Оеаггцсп (1) г ) с1азз Оезггцсгбешо ( зпаг1с чо1б Ма1п() ( ьпг соцпс; Оезггцсп оЬ = пеи Оезггцсс(0) /* Л теперь создать большое число объектов. В какой-то момент произойдет "сборка мусора". Примечание: для того чтобы активизировать "сборку мусора", возможно, придется увеличить число создаваемых объектов.

*/ Гог(соцпс=1," соцпг < 100000; соцпг++) оЬ.Яепегапог(соцпС)Г Сопзо1е.нг1пеътпе("т'стево!"); Эта программа работает следующим образом. Конструктор инициализирует переменную х известным значением. В данном примере переменная х служит в качестве идентификатора объекта. А деструктор выводит значение переменной х, когда объект утилизируется.

Особый интерес вызывает метод 6епегасог ( ), который создает и тут же уничтожает объект типа Вез ггпсе. Сначала в классе Оев С го се пежо создается исходный объект оь типа Рез сгцсс, а затем осуществляется поочередное создание и уничтожение 100 тью. объектов. В разные моменты этого процесса происходит "сборка мусора". Насколько часто она происходит — зависит от нескольких факторов, в том числе от первоначального объема свободной памяти, типа используемой операционной системы и т.д. Тем не менее в какой-то момент начинают появляться сообщения, формируемые деструктором. Если же они не появятся до окончания программы, т.е. до того момента, когда будет выдано сообщение 'Тотово!", попробуйте увеличить число создаваемых объектов, повысив предельное количество подсчитываемых шагов в цикле гог.

И еще одно важное замечание: метод игдгеЬдпе ( ) вызывается в деструкторе -Оезсгцсс () исключительно ради наглядности данного примера его использования. Как правило, деструктор должен воздействовать только на переменные экземпляра, определенные в его классе.

В силу того что порядок вызова деструкторов не определен точно, их не следует применять для выполнения действий, которые должны происходить в определенный 174 Часть (. Язык С№ момент выполнения программы. В то же время имеется возможность запрашивать "сборку мусора", как будет показано в части П этой книги при рассмотрении библиотеки классов СК Тем не менее инициализация "сборки мусора" вручную в большинстве случаев не рекомендуется, поскольку это может привести к снижению эффективности программы. Кроме того, у системы "сборки мусора" имеются свои особенности — даже если запросить "сборку мусора" явным образом, все равно нельзя заранее знать, когда именно будет утилизирован конкретный объект.

КЛЮЧВВОВ СЛОВО ~Ь2.8 Прежде чем завершать эту главу( необходимо представить ключевое слово сЫ я. Когда метод вызывается, ему автоматически передается ссылка на вызывающий объект, т.е. тот объект, для которого вызывается данный метод. Эта ссылка обозначается ключевым словом с)71я. Следовательно, ключевое слово с)71я обозначает именно тот объект, по ссылке на который действует вызываемый метод. Для того чтобы стало яснее назначение ключевого слова спзя, рассмотрим сначала пример программы, в которой создается класс Вест, инкапсулирующий ширину и высоту прямоугольника и включающий в себя метод )(геа (), возвращающий площадь прямоугольника. ияьпч Буягещ) с1аяя Весг ( роЫгс гпг И1НСЬ) риЫзс ьпг Не19ПЫ рпЫ1о Веоп(ьпг н, 1пг П) ( И1НСП = н; Неьчпс = Ы ) рпЫ1с 1пг Агеа() ( гегогп И1НСП * Не19ПЮ ) ) о1аяя Пяенесг ( ягагьс уо1г( Ма1п() Веог г1 = пен Вест(4, 5) Неся г2 = пен Весь(7, 9) Сопяо1е.Игьсеьгпе("Площадь прямоугольника г1." " + г1.вгеа()) Сопяо1е.нгьпе11пе("Площадь прямоугольника г2: " е г2.Агеа()); ) ) Как вам должно уже быть известно, другие члены класса могут быть доступны непосредственно без дополнительного уточнения имени объекта или класса.

Поэтому оператор гегогп И1НСП * Неьчью Глава 6. Введение в классы, объекты и методы 175 в методе Агеа () означает, что копии переменных Ыгс)ЬЛ и НегоЛЬ, связанные с вызывающим объектом, будут перемножены, а метод возвратит их произведение. Но тот же самый оператор можно написать следующим образом. гаспгп Гивя.нгдГЛ * ГЛ1я.Не1ЕЛГт В этом операторе ключевое слово слгя обозначает объект, для которого вызван метод Агеа () . Следовательно, в выражении слгя .

иго ьл делается ссылка на копию переменной хгоьл данного объекта, а в выражении слгя. Пегдлс — ссылка на копию переменной Не1дЛЬ этого же объекта. Так, если бы метод Агеа Н был вызван для объекта х, то ключевое слово СЛгя в приведенном выше операторе обозначало бы ссылку на объект х. Написание оператора без ключевого слова ЬЛгя представляет собой не более чем сокращенную форму записи. Ключевое слово ЬЛгя можно также использовать в конструкторе. В этом случае оно обозначает объект, который конструируется. Например, следующие операторы в методе Вест ( ) Игг)ГЛ = н; Негчпс = Лм можно было бы написать таким образом. ЛЬ1я.и1оЬЛ = и) ГЛгя.не1ЕЛГ = Л; Разумеется, такой способ записи не дает в данном случае никаких преимуществ. Ради примера ниже приведен весь класс Вест, написанный с использованием ссылки ЬЛ1я.

пя1пч Яуягещ~ с1аяя Васс роЬ11С 1ПГ И1НЛЛт рпььгс 1пс Негэлст роЬ11с Васс(гпс н, гпс Л) ( Гиья.нмаГЛ = и; гЛ1я.негэлг = )и ) риЬ11с 1пс Агеа() ( геспгп ГЛгя.игНГЛ * ГЛ1я.ие1ЕЛГ) ) ) с1аяя Пяевесг ( ясас1с уотг) Магп() ( Весс г1 = пан Васс(4, 5) ВесТ г2 = пен Вест(т, 9) Сопяо1е.игггееъ1пе("Площадь прямоугольника г1: " + г1.Агеа()) сопяо1е.нгггелгпе("площадь прямоугольника г2: " + г2.лгеа()) 176 Часть 1.

Язык С(г В действительности ключевое слово с)газ не используется приведенным выше способом в программировании на С№, поскольку это практически ничего не дает, да и стандартная форма записи намного проще и понятнее. Тем не менее ключевому слову сМ з можно найти не одно полезное применение. Например, в синтаксисе С№ допускается называть параметр или локальную переменную тем же именем, что и у переменной экземпляра. В этом случае имя локальной переменной скрываегп переменную экземпляра. Для доступа к скрьпой переменной экземпляра и служит ключевое слово сМз.

Например, приведенный ниже код является правильным с точки зрения синтаксиса С№ способом написания конструктора несс () . рпЫхс Несг(тпг ХЬОГЛ, Ьпг Нетдкс) ( сньз.ньг(Сп = ньг(гнг ГН№в.не№дьс = Не№ЧЬГ; ) В этом варианте написания конструктора несс () имена параметров совпадают с именами переменных экземпляра, а следовательно, скрывают их. Но для "обнаружения" скрытых переменных служит ключевое слово спзз. 178 Часть ). Язык С№ объекты. Реализация массивов в виде объектов дает ряд существенных преимуществ, и далеко не самым последним среди них является возможность утилизировать неиспользуемые массивы средствам "сборки мусора".

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

И во-вторых, нужно создать экземпляр массива, используя оператор пеи. Так, для объявления одномерного массива обычно применяется следующая общая форма: тип[) имя массива = пем тип[рвэмер); где тип объявляет конкретный тип элемента массива. Тип элемента определяет тип данных каждого элемента, составляющего массив. Обратите внимание на квадратные скобки, которые сопровождают тип. Они указывают на то, что объявляется одномерный массив.

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

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

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

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