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

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

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

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

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

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

интерфейс 1Гогщаг ьаь1е поддерживает форматирование выводимых результатов в удобочитаемой форме. В нем определен следующий метод: Ягггпч ТоБСгдпч(яггьпч Тогюаг, 1Гогщагргоч1бег Еогюасргошбег) где тогща г обозначает инструкции для форматирования, а тогща гргочус(ег— поставщик формата. ПРИМЕЧАНИЕ Подробнее о форматировании речь пойдет в главе 22. Интерфейсы 10ЪзегчаЬХе<Т> и ХОЬзегчег<Т> В версию .)Х)ЕТ Егатпеи ог)с 4.0 добавлены еще два интерфейса, поддерживающие шаблон наблюдателя: 10ЬяегчаЬ1е<Т> и 10Ьяегчег<Т>.

В шаблоне наблюдателя один класс (в роли наблюдаемого) предоставляет уведомления другому классу (в роли 782 Часть И. Библиотека С№ наблюдателя). С этой целью объект наблюдаемого класса регистрирует объект наблюдающего класса. Для регистрации наблюдателя вызывается метод ЯпЬзсг1Ье (), который определен в интерфейсе 1оьвегчаь1е<т> и которому передается объект типа 10Ьзегчег<Т>, принимающий уведомление. Для поЛучения уведомлений можно зарегистрировать несколько наблюдателей.

А для отправки уведомлений всем зарегистрированным наблюдателям применяются три метода, определенные в интерфейсе 10ъвегчег<т>. Так, метод Опнекс () отправляет данные наблюдателю, метод ОпЕгсог () сообщает об ошибке, а метод ОпОоыр1екег(() указывает на то, что наблюдаемый объект прекратил отправку уведомлений. 784 Часть П. Библиотека С() После создания строки последовательность составляющих ее символов не мо>хет быть изменена. Благодаря этому ограничению строки реализуются в С)) более эффективно. И хотя такое ограничение кажется на первый взгляд серьезным препятствием, на самом деле оно таковым не является.

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

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

Кроме того, Ясг1пд— герметичный класс, а это означает, что он не может наследоваться. В классе Бсггпд предоставляются все необходимые функциональные возможности для обработки символьных строк в С)). Он служит основанием для встроенного в С() типа Ясг1пд и является составной частью среды .[МЕТ атташе)чог)г. В последующих разделах представлено подробное описание класса Бсг1пд. Конструкторы класса 8Сезлт(т В классе Бсгапд определено несколько конструкторов, позволяющих создавать строки самыми разными способами.

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

Кроме того, строку можно создать по заданному указателю на символьный массив, используя один из следующих конструкторов. рпЫгс Ясгьпд(сьаг* га1ие) рпЫгс Ясггпд(сьаг* га1ие, гпс зсагс1пг(ех, ьпс 1епдсь) Глава 22. Строки к Форматирование 785 Первая форма конструктора позволяет создать строку из символов, доступных из массива по указателю иа1ие. При этом предполагается, что массив, доступный по указателю иа1ие, завершается пустым символом, обозначающим конец строки.

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

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

Техт. В этих конструкторах применяются указатели, и поэтому их можно использовать только в небезопасном коде. При объявлении строкового литерала автоматически создается строковый объект. Поэтому для инициализации строкового объекта зачастую оказывается достаточно присвоить ему строковый литерал, как показано ниже. ягг1пд ягг = "новая строка"; Поле, индексатор и свойство класса 8~гхпд В классе Бгг1пд определено единственное поле. риЫьс ясас1с геас(сп1у ясггпд Барсу Поле Егпрсу обозначает пустую строку, т.е, такую строку, которая не содержит символы. Этим оно отличается от пустой ссылки типа Бег 1 ось которая просто делается на несуществующий объект. Помимо этого, в классе Бсгьпд определен единственный индексатор, доступный только для чтения.

риЫ1с спаг гшя(гпг 1лсех) ( дегг ) Этот индексатор позволяет получить символ по указанному индексу. Индексация строк, как и массивов, начинается с нуля. Объекты типа БС г1пд отличаются постоянством и не изменяются, поэтому вполне логично, что в классе Б Сгъод поддерживается индексатор, доступный только для чтения. И наконец, в классе Бсгзпд определено единственное свойство, доступное только для чтения. риЬТьс 1пс Ъепдсп ( дес," ) Свойство Ьепдсп возвращает количество символов в строке. 786 Часть )).

Библиотека С№ Операторы класса ЯШпд В классе вгг1пд перегружаются два следующих оператора: == и ! =. Оператор == служит для проверки двух символьных строк на равенспю. Когда оператор == применяется к ссылкам на объекты, он обычно проверяет, делаются ли обе ссылки на один и тот же объект. А когда оператор == применяется к ссылкам на объекты типа Б сьота, то на предмет равенства сравнивается содержимое самих строк. Это же относится и к оператору ! =. Когда он применяется к ссылкам на объекты типа Бг гз ад, то на предмет неравенства сравнивается содержимое самих строк. В то же время другие операторы отношения, в том числе < и >=, сравнивают ссылки на объекты типа Бггдпд таким же образом, как и на объекты других типов.

А для того чтобы проверить, является ли одна строка больше другой, следует вызвать метод Соглраге (), определенный в классе ясгзпгь Как станет ясно дальше, во многих видах сравнения символьных строк используются сведения о культурной среде. Но это не относится к операторам = = и! =. Ведь они просто сравнивают порядковые значения символов в строках. (Инымн словами, они сравнивают двоичные значения символов, не видоизмененные нормами культурной среды, т.е.

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

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

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

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

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