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

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 146

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

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

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

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

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

// Продемонстрировать применение интерфейса 1С1опеаЫе. нвгнд зувтеит с1авв Х ( рнЫьс 1пс ат 742 Часть )!. Библиотека С» рчЫТс Х(впк х) ( а = х; ) ) с1аяв Тевк: 1С1опеаЬ1е ( рпЬ11с Х от рчЬ11с Тпк Ь) рчЫ1с Тевк(апк х, 1пк у) ( о лен Х(х): Ь = у) ) рчЫТс гоаб зьон(вкгтп9 паве) ( Сопво1е.иг1ке("Значения объекта " т паве + ": "); Сопво1е.Иг).кеЫпе("о.а: (О), Ь: (1)", о.а, Ы ) ) // Создать полную копию вызывающего объекта.

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

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

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

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

оЬ9есг СеСЕогтвг(туре гтг) где б лС вЂ” это объект, получаемый для форматирования. Интерфейс 1рогщаССаЫе поддерживает форматироваиие выводимых результатов в удобочитаемой форме. В ием определен следующий метод: зпг1пч Тозпггпо(зпг1по Етг, 1гпгтагргонсбег гтгрчг(г) где бтс обозначает инструкции для форматирования, а бтсрчс(г — поставщик формата. Нз заметку! Подробнее о форматировании речь пойдет в главе 22.

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

Строки в СФ Вопросы обработки строк уже обсуждались в главе 7, и поэтому не стоит повторяться. Вместо этого целесообразно дать краткий обзор реализации символьных строк в С№, прежде чем переходить к рассмотрению класса Зхгьпо. Во всех языках программирования строка представляет собой последовательность символов, но конкретная ее реализация отличается в разных языках. В некоторых языках программирования, например в С++, строки представляют собой массивы символов, тогда как в С№ они являются объектами встроенного типа данных зегхпо.

Следовательно, зсгьпо является ссылочным типом. Более того, зсгхпо — это имя стандартного для среды 1чЕТ строкового типа зузсев. зсг1оо. Это означает, что в С№ строке как объекту доступны все методы, свойства, поля и операторы, определенные в классе зхгьпо. После создания строки последовательность составляющих ее символов не может быть изменена.

Благодаря этому ограничению строки реализуются в С№ более эффективно. И хотя такое ограничение кажется на первый взгляд серьезным препятствием, на самом деле оно таковым не является. Когда требуется получить строку как разновидность уже существующей строки, достаточно создать новую строку, содержащую требующиеся изменения, и отвергнуть исходную строку, если она больше не нужна. А поскольку ненужные строковые объекты автоматически утилизируются средствами "сборки мусора", то беспокоиться о дальнейшей судьбе отвергнутых строк не приходится. Следует, однако, подчеркнуть, что переменные ссылок на строки могут, безусловно, изменить объект, на 746 Часть ](.

Библиотега С№ который они ссылаются. Но сама последовательность символов в конкретном строковом объекте не подлежит изменению после его создания. Для создания строк, которые нельзя изменить, в С№ предусмотрен класс ЯСг1пдпи11с[ег, находящийся в пространстве имен ЯуяСев. Техт. Но на практике для этой цели чаШе используется тип яггхпд, а не класс ягс1пдпи11«[ес. Класс з~ххп9 Класс я с г1пд определен в пространстве имен Я у ягеп«В нем реализуются следующие интерфейсы: 1СоврасаЫе, ТСоврасаЫе<ясс1пд>, 1С1опеаЫе, 1СопчесС1Ые, ТепивегаЫе, тепивегаые<слас> и ТедиасэЫе<ясг1пд>. Кроме того, ясг1пд — герметичный класс, а это означает, что он не может наследоваться.

В классе Ясг1пд предоставляются все необходимые функциональные возможности для обработки строк в С№. Он служит основанием для встроенного в С№ типа яс г1пд и является составной частью среды .]«]ЕТ Есауле«иог]с В последующих разделах представлено подробное описание класса Ясг1пд. Конструкторы класса З~к~ад В классе 5Сг1пд определено несколько конструкторов, позволяющих создавать строки самыми разными способами.

Для создания строки из символьного массива служит один из следующих конструкторов: риЫ1с 5«г«пд(спас[ ] сьгя) риЬ11с 5«г«пд(сьаг( ] сЛгя, 1ЛС ягагС, «пС соилС) Первая форма конструктора позволяет создать строку, состоящую из символов массива сЛтя. А во второй форме для этой цели из массива сЛхя извлекается определенное количество символов (соил с), начиная с элемента, указываемого по индексу я Сагг.

С помощью приведенного ниже конструктора можно создать строку, состоящую из отдельного символа, повторяющегося столько раз, сколько потребуется. риЫ1с ЯСг1пд(спас сЛ, «пС соилС) где сЛ обозначает повторяющийся символ; соил с — количество его повторений. Кроме того, строку можно создать по заданному указателю на символьный массив, используя один из следующих конструкторов: риЫ1с 5«г1пд(спас* сЛгя) риЬ1«с ЯСг«пд(спас* сЛгя, 1пС ягагг, «пС соилС) Первая форма конструктора позволяет создать строку из символов, доступных из массива по указателю сЛхя.

При этом предполагается, что массив, доступный по указателю сЛгя, завершается пустым символом, обозначающим конец строки. А во второй форме конструктора для этой цели из массива, доступного по указателю сЛяя, извлекается определенное количество символов ( соил с), начиная с элемента, указываемого по индексу я са гс. В этих конструкторах применяются указатели, поэтому их можно использовать только в небезопасном коде.

И наконец, строку можно создать по заданному указателю на байтовый массив, используя один из следующих конструкторов: риЫ«с ЯСгепд(яЬуие* слгя) риЫ«с 5«г«пд(яЬу«е* сЛгя, «пС яеагг, епС соиле) риЫ«с ЯСг«пд(яЬуСе* сЛгя, «пС ягагг, «пС сиилС, Епсот(1пд еп) Глава 22. Строки и форматирование 747 Первая форма конструктора позволяет создать строку из отдельных байтов символов, доступных из массива по указателю с)тга. При этом предполагается, что массив, доступный по указателю с)тга, завершается признаком конца строки. Во второй форме конструктора для этой цели из массива, доступного по указателю с(тга, извлекается определенное количество байтов символов ( соил с), начиная с элемента, указываемого по индексу а сагс. А третья форма конструктора позволяет указать количество кодируемых байтов.

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

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

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

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее