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

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

C# 4.0: полное руководство: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «C# 4.0: полное руководство»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «C# 4.0: полное руководство», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Ниже приведен пример программы, в которой демонстрируется применение интерфейса ICloneable. В ней создается класс Test, содержащий ссылку на объект класса X. В самом классе Testиспользуется метод Clone()для создания полной копии.

// Продемонстрировать применение интерфейса ICloneable.

using System;

class X {

public int a;

public X(int x) { a = x; }

}

class Test : ICloneable {

public X o;

public int b;

public Test(int x, int y) {

o = new X(x);

b = y;

}

public void Show(string name) {

Console.Write("Значения объекта " + name + ": ");

Console.WriteLine("o.a: {0}, b: {1}", o.a, b);

}

// Создать полную копию вызывающего объекта,

public object Clone() {

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

return temp;

}

}

class CloneDemo {

static void Main() {

Test ob1 = new Test(10, 20);

ob1.Show("ob1");

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

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

ob2.Show("ob2");

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

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

ob1.o.a = 99;

ob1.b = 88;

ob1.Show("ob1");

ob2.Show("ob2");

}

}

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

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

Сделать объект оb2 копией объекта оb1.

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

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

Значения объекта оb1: о.а: 99, b: 88

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

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

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

// Сделать неполную копию вызывающего объекта,

public object Clone() {

Test temp = (Test) MemberwiseClone();

return temp;

}

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

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

Сделать объект оb2 копией объекта оb1.

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

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

Значения объекта ob1: о.а: 99, b:

88 Значения объекта оb2: о.а: 99, b: 20

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

Интерфейсы IFormatProvider и IFormattable

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

object GetFormat(Type formatType)

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

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

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()указывает на то, что наблюдаемый объект прекратил отправку уведомлений.

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

Интервал:

Закладка:

Сделать

Похожие книги на «C# 4.0: полное руководство»

Представляем Вашему вниманию похожие книги на «C# 4.0: полное руководство» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «C# 4.0: полное руководство»

Обсуждение, отзывы о книге «C# 4.0: полное руководство» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x