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

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

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

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

А поскольку для ее выполнения требуется некоторое время, то желательно, чтобы она не происходила в тот момент, когда решается критичная по времени задача. С другой стороны, "сборку мусора" и другие вспомогательнгяе операции можно выполнить во время простоя программы. Имеется также возможность регистрировать уведомления о приближении и завершении "сборки мусора". Для проектов с неуправляемым кодом особое значение имеют два следующих метода из класса ОС: дс)оиетогуРгеяяпге () и РеточенетогуРгеяяпге () .

С их помощью указывается большой объем неуправляемой памяти, выделяемой или освобождаемой в программе. Особое значение этих методов состоит в том, что система управления памятью не контролирует область неуправляемой памяти. Если программа выделяет большой объем неуправляемой памяти, то это может сказаться на производительности, поскольку системе ничего неизвестно о таком сокращении объема свободно доступной памяти. Если же большой объем неуправляемои памяти выделяется с помощью метода дс(с)МетогуРгея виге (), то система С(.Е уведомляется о сокращении объема свободно доступной памяти.

А если выделенная область памяти освобождается с помощью метода РетоуенетогуРгеяяиге (), то система СЕВ уведомляется о соответствующем восстановлении объема свободно досгупной памяти. Следует, однако, иметь в виду, что метод КеточенетогуРгеяяиге () необходимо вызывать только для уведомления об освобождении области неуправляемой памяти, выделенной с помощью метода Дс)днетогуРгевяцге () . Тлава 21. Пространство имен Зувтегп 777 Класс оЬ1ео~ В основу типа оьбесс в С(Г положен класс оьбесг.

Члены класса Оь)есс подробно рассматривались в главе 11, но поскольку он играет главную роль в С((, то его методы ради удобства повторно перечисляются в табл. 21.1б. В классе оЬ1 есг определен конструктор риЬЬьс ОЬ)есг() который создает пустой объект, Таблица 21.16. Методы, определенные в классе ОЬзеоЬ Метод Назначение рпЬ11с чдггпа1 Ьоо1 Ег[иа1э (оЬ)есг оЬ1) Возвращает логическое значение ггсе, если вы- зывающий объект оказывается таким же, как и ОбЪЕКт, ОПрЕдЕЛяЕМЫй ПараМЕтрОМ оЬтх В ПрО- тивном случае возвращается значение Га1ее Возвращает логическое значение сгпе, если объект оЬС д оказывается таким же, как и объект оЬ)В.

В противном случае возвращается значе- ние Та1зе Выполняет завершающие действия перед процес- СОМ "СбОрКИ МуСОра". В С(т МЕтОд Еьпа11зе [) доступен через деструктор Возвращает хеш-код, связанный с вызывающим обьектом Получает тип обьекта во время выполнения про- граммы Создает "неполную" копию объекта. При этом ко- пируются члены, но не объекты, на которые ссы- лаются эти члены Возвращает логическое значение стае, если объекты оьтл и оьтВ ссылаются на один и тот же объект.

В противном случае возвращается ло- гическое значение Та1зе Возвращает строку, описывающую объект риЫТс зсагьс Ьоо1 Есрза1э (оЬ)есс оЬтл, оЬ1есс оЬ1В) ргогессес) Гзпа11зе() риЬ11с чьггпа1 Тпг СесиазЬСог[е() рпЫ1с Туре Сегтуре() рго1есьес( оЬ)есс МеагЬеги1эеС1опе() риЫТс згасдс Ьоо1 ВегегепсеЕс[па1э(оЬбесс оЬ)А, оЬ)есг оЬ2В) риЫТс ч1гсиа1 згг1п1т ТоБСг1пд() Класс тир1е В версии .НЕТ Ргагпеигог)г 4.0 внедрен удобный способ создания групп объектов (так называемых кортежей). В основу этого способа положен статический класс Тпр1е, в котором определяется несколько вариантов метода Сгеаге () для создания кортежей, а также различные обобщенные классы типа Тыр1е<...

>, в которых инкапсулируются кортежи. В качестве примера ниже приведено объявление варианта метода Сгеаге [), возвращающего кортеж с тремя членами. 778 Часть! 1. Библиотека С(г роЬ11о воаг1о Тор1е<Т1, Т2, ТЗ> Сгеаге<Т1, Т2, ТЗ>(Т1 1геа1, Т2 згеа2, ТЗ 1геиз) Следует заметить, что данный метод возвращает объект типа Тир1е<Т1, Т2, ТЗ>, в котором инкапсулируются члены кортежа 1гегв1, згегв2 и 1 СегвЗ.

Вообще говоря, кортежи оказываются полезными в том случае, если группу значений нужно интерпретировать как единое целое. В частности, кортежи можно передавать методам, возвращать из методов или же сохранять в коллекции либо в массиве. Интерфейсы ХСотйрахаЬ1е и ХСотйрагаЬ1е<Т> Во многих классах приходится реализовывать интерфейс ТСоырагаЬ1е или 1Сопра гаЬ1е<Т>, поскольку он позволяет сравнивать один объект с другим, используя различные методы, определенные в среде ЛЕТ Ргатетчог)с.

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

роЬ11о ьогегтасе теоврагаЬ1е<т> В данном варианте тип сравниваемых данных передается параметру Т в качестве аргумента типа. В силу этого объявление метода согврагеТо ( ) претерпевает изменения и выглядит так, как показано ниже. 1ог СотрагеТо (Т огвег) В этом объявлении тип данных, которыми оперирует метод согврагето (), может быть указан явным образом. Следовательно, интерфейс 1СоырагаЬ1е<Т> обеспечивает типовую безопасность. Именно по этой причине он теперь считается более предпочтительным в программировании на СФ, чем интерфейс 1СоырагаЬ1е. Интерфейс 1Есрта1аЬ1е<Т> Интерфейс 1ес(иасаь1е<т> реализуется в тех классах, где требуется определить порядок сравнения двух объектов на равенство их значений. В этом интерфейсе определен только один метод, ВЧиа1в ( ), объявление которого приведено ниже.

Глава 21. Пространство имен ЗувТев) 779 ЬЬЬ1 Ейда1я(т аГЛег) Этот метод возвращает логическое значение Ггпе, если значение вызывающего объекта оказывается равным значению другого объекта оГЛег, в противном случае— логическое значение Та1яе. Интерфейс 1Ес)пасаЬ1е<Т> реализуется в нескольких классах и структурах среды МЕТ Ргашеттог)с, включая структуры числовых типов и класс НГЬ1по.

Для реализации интерфейса 1Ег)пасаЬ|е<Т> обычно требуется также переопределять методы Ес(па1я (ОЬуесг) и ОегнаяЬСос)е (), определенные в классе ОЬПесг. Интерфейс 1Сот1чег1хЬ1е Интерфейс 1соптеггТЫе реализуется в структурах всех типов значений, еьгьпо и Оасет1пе. В нем определяются различные преобразования типов.

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

Если создается полная копия, то копия соверщенно не зависит от оригинала. Так, если в исходном объекте содержится ссылка на другой объект О, то при его копировании создается также копия объекта О. А при создании неполной копии осуществляется копирование одних только членов, но не объектов, на которые эти члены ссылаются.

Так, после создания неполной копии объекта, ссылающегося на другой объект О, копия и оригинал будут ссылаться на один и тот же объект О, причем любые изменения в объекте О будут оказывать влияние как на копию, так и на оригинал. Как правило, метод С1опе () реализуется для получения полной копии. А неполные копии могут быть созданы с помощью метода МетЬегифяеС1опе (), определенного в классе ОЬ1 еег.

Ниже приведен пример программы, в которой демонстрируется применение интерфейса 1С1опеаЬ1е. В ней создается класс Те я с, содержащий ссылку на объект класса Х. В самом классе Теяс используется метод С1опе () для создания полной копии. О продемонстрировать применение интерфейса 1С1опеаЬ1е. аятпд яуятеи; с1аяя Х ( рвЫтс ьпг а; рагс Х(ьпт х) ( а = х; ) ) с1аяя Таят : 1С1опааЫе ( 780 Часть И. Библиотека С() роЫ око; роЫгс гпс Ь; роЫгс ТеяС(гпС х, гпС у) ( о '= лен Х(х); у~ ) роЫгс чосб Ялом(яггтпс папе) ( Сопяо1е.нгтге("Значения объекта " + паве + ": "); Сопяо1е.нгтгеъгпе("о.а: (О), Ь: (1)", о.а, Ь); ) УУ Создать полную копию вызывагяцего объекта.

роЫ1с оЬЯесС С1опе() ( ТеяС Сепр = лен ТеяС(о.а, Ь); гесогп севр) ) ) с1аяя С1опеОево ( ясасгс чогб Ма1п() ( Теяг оЬ1 = лен ТеяС(10, 20)) оЫ .Ялом("оЬ1") Сопяо1е.нгтгеьтпе("Сделать объект оЬ2 копией объекта оЫ .") Теяг оЬ2 = (Теяг) оЫ .С1опе(); оЬ2.ЯЬон("оЬ2"); Сопяо1е.нг1геъвпе("Изменить значение оЫ .о.а на 99, а значение оЫ .Ь вЂ” на 88."); оЫ .о.а = 99; оЫ.Ь = 88; оЬ1. Ялом ("оЫ") 1 оЬ2 .Ялом ("оЬ2" ); ) ) Ниже приведен результат выполнения этой программы. Значения обьекта оЫ: о.а: 10, Ь: 20 Сделать объект оЬ2 копией объекта оЫ . Значения объекта оЬ2: о.а: 10, Ъ: 20 Изменить значение оЬ1.о.а на 99, а значение оЫ .Ь вЂ” на 88.

Значения объекта оЬ1: о.а: 99, Ь: 88 Значения объекта оЬ2: о.а: 10, Ь: 20 Как следует из результата выполнения приведенной выше программы, объект оЬ2 является копией объекта оЬ1, но это совершенно разные объекты. Изменения в одном из них не оказывают никакого влияния на другой. Это достигается конструированием нового объекта типа те я С, который выделяет новый объект типа Х для копирования. При этом новому экземпляру объекта типа Х присваивается такое же значение, как и у объекта типа Х в оригинале. Глава 21. Пространство имен Вув(еп) 781 Для получения неполной копии достаточно вызвать метод МещЬегыаяеС1опе (), определяемый в классе 0Ь9 есг из метода С1опе () . В качестве упражнения попробуйте заменить метод С1опе () в предыдущем примере программы на следующий его вариант. О Сделать неполную копию вызывающего объекта.

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

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

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

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