Герберт Шилдт - C# 4.0 полное руководство - 2011

Тут можно читать онлайн Герберт Шилдт - C# 4.0 полное руководство - 2011 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание

C# 4.0 полное руководство - 2011 - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)

C# 4.0 полное руководство - 2011 - читать книгу онлайн бесплатно, автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Test temp = new Test(o.a, b); return temp;

}

}

class CloneDemo {

static void Main() {

Test obi = new Test(10, 20);

obi.Show("obi");

Console.WriteLine("Сделать объект ob2 копией объекта obi.");

Test ob2 = (Test) obi.Clone ();

ob2.Show("ob2");

Console.WriteLine("Изменить значение obi.о.а на 99, " +

" а значение obl.b — на 88.");

obi.о.a = 99; obl.b = 88;

obi.Show("obi"); ob2.Show("ob2");

}

}

, Ниже приведен результат выполнения этой программы.

Значения объекта оЫ: о.а: 10, Ь: 20 Сделать объект оЬ2 копией объекта оЫ.

Значения объекта оЬ2: о.а: 10, Ь: 20

Изменить значение obi.о.а на 99, а значение obl.b — на 88.

Значения объекта оЫ: о.а: 99, Ь: 88 Значения объекта оЬ2: о.а: 10, Ь: 20

Как следует из результата выполнения приведенной выше программы, объектоЬ2 является копией объекта оЫ, но это совершенно разные объекты. Изменения в одном из них не оказывают никакого влияния на другой. Это достигается конструированием нового объекта типа Test, который выделяет новый объект типа X для копирования. При этом новому экземпляру объекта типа X присваивается такое же значение, как и у объекта типа X в оригинале.

Для получения неполной копии достаточно вызвать метод MemberwiseClone (), определяемый в классе Object из метода Clone () . В качестве упражнения попробуйте заменить метод Clone () в предыдущем примере программы на следующий его вариант.

// Сделать неполную копию вызывающего объекта, public object Clone () {

Test temp = (Test) MemberwiseClone(); return temp;

}

После этого изменения результат выполнения данной программы будет выглядеть следующим образом.

Значения объекта obi: о.а: 10, Ь: 20 Сделать объект оЬ2 копией объекта оЫ.

Значения объекта оЬ2: о.а: 10, Ь: 20

Изменить значение obi.о.а на 99, а значение obl.b — на 88.

Значения объекта obi: о.а: 99, Ь: 88 Значения объекта оЬ2: о.а: 99, Ь: 20

Как видите, обе переменные экземпляра о в объектах оЫ и оЬ2 ссылаются на один и тот же объект типа X. Поэтому изменения в одном объекте оказывают влияние на другой. Но в то же время поля b типа int в каждом из них разделены, поскольку типы значений недоступны по ссылке.

Интерфейсы I Forma tProvider и I Format table

В интерфейсе I Forma tProvider определен единственный метод Get Format () , который возвращает объект, определяющий форматирование данных в удобочитаемой форме текстовой строки. Ниже приведена общая форма метода Get Format ():

object GetFormat(Type formatType)

где formatType — это объект, получаемый для форматирования.

Интерфейс I Format table поддерживает форматирование выводимых результатов в удобочитаемой форме. В нем определен следующий метод:

string ToString(string format, IFormatProvider formatProvider)

где format обозначает инструкции для форматирования, a formatProvider — поставщик формата.

ПРИМЕЧАНИЕ

Подробнее о форматировании речь пойдет в главе 22.

Интерфейсы IObservable и IObserver

В версию .NET Framework 4.0 добавлены еще два интерфейса, поддерживающие шаблон наблюдателя: IObservable и IObserver. В шаблоне наблюдателя один класс (в роли наблюдаемого) предоставляет уведомления другому классу (в роли наблюдателя). С этой целью объект наблюдаемого класса регистрирует объект наблюдающего класса. Для регистрации наблюдателя вызывается метод Subscribe () , который определен в интерфейсе IObservable и которому передается объект типа IObserver, принимающий уведомление. Для получения уведомлений можно зарегистрировать несколько наблюдателей. А для отправки уведомлений всем зарегистрированным наблюдателям применяются три метода, определенные в интерфейсе IObserver. Так, метод OnNext ( ) отправляет данные наблюдателю, метод OnError () сообщает об ошибке, а метод OnCompleted () указывает на то, что наблюдаемый объект прекратил отправку уведомлений.

ГЛАВА 22 Строки и форматирование

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

Строки в с#

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

Во всех языках программирования строка представляет собой последовательность символов, но конкретная ее реализация отличается в разных языках. В некоторых языках программирования, например в C++, строки представляют собой массивы символов, тогда как в C# они являются объектами встроенного типа данных string. Следовательно, string является ссылочным типом. Более того, string — это имя стандартного для среды .NET строкового типа System. String. Это означает, что в C# строке как объекту доступны все методы, свойства, поля и операторы, определенные в классе String.

После создания строки последовательность составляющих ее символов не может быть изменена. Благодаря этому ограничению строки реализуются в C# более эффективно. И хотя такое ограничение кажется на первый взгляд серьезным препятствием, на самом деле оно таковым не является. Когда требуется получить строку как разновидность уже существующей строки, достаточно создать новую строку, содержащую требующиеся изменения, и "отвергнуть" исходную строку, если она больше не нужна. А поскольку ненужные строковые объекты автоматически утилизируются средствами "сборки мусора' 7, то беспокоиться о дальнейшей судьбе ''отвергнутых 77 строк не приходится. Следует, однако, подчеркнуть, что переменные ссылок на строки могут, безусловно, изменить объект, на который они ссылаются. Но сама последовательность символов в конкретном строковом объекте не подлежит изменению после его создания.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0 полное руководство - 2011 отзывы


Отзывы читателей о книге C# 4.0 полное руководство - 2011, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x