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


Авторские права

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

Здесь можно скачать бесплатно "Герберт Шилдт - C# 4.0: полное руководство" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство ООО "И.Д. Вильямс", год 2011. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Герберт Шилдт - C# 4.0: полное руководство
Рейтинг:
Название:
C# 4.0: полное руководство
Издательство:
ООО "И.Д. Вильямс"
Год:
2011
ISBN:
978-5-8459-1684-6
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C# 4.0: полное руководство"

Описание и краткое содержание "C# 4.0: полное руководство" читать бесплатно онлайн.



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


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию






И наконец, событие запускается, как показано ниже.


// Запустить событие,

evt.OnSomeEvent();


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


Пример групповой адресации события

Как и делегаты, события поддерживают групповую адресацию. Это дает возможность нескольким объектам реагировать на уведомление о событии. Ниже приведен пример групповой адресации события.


// Продемонстрировать групповую адресацию события,

using System;


// Объявить тип делегата для события,

delegate void MyEventHandler() ;


// Объявить делегат, содержащий событие,

class MyEvent {

  public event MyEventHandler SomeEvent;


  // Этот метод вызывается для запуска события,

  public void OnSomeEvent() {

    if(SomeEvent != null)

      SomeEvent();

  }

}


class X {

  public void Xhandler() {

    Console.WriteLine("Событие получено объектом класса X");

  }

}


class Y {

  public void Yhandler() {

    Console.WriteLine("Событие получено объектом класса Y");

  }

}


class EventDemo2 {

  static void Handler() {

    Console.WriteLine("Событие получено объектом класса EventDemo");

  }


  static void Main() {

    MyEvent evt = new MyEvent();

    X xOb = new X();

    Y yOb = new Y();


    // Добавить обработчики в список событий.

    evt.SomeEvent += Handler;

    evt.SomeEvent += xOb.Xhandler;

    evt.SomeEvent += yOb.Yhandler;


    // Запустить событие, evt.OnSomeEvent() ;

    Console.WriteLine() ;


    // Удалить обработчик.

    evt.SomeEvent -= xOb.Xhandler;

    evt.OnSomeEvent() ;

  }

}


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


Событие получено объектом класса EventDemo

Событие получено объектом класса X

Событие получено объектом класса Y


Событие получено объектом класса EventDemo

Событие получено объектом класса Y


В данном примере создаются два дополнительных класса, X и Y, в которых также определяются обработчики событий, совместимые с делегатом MyEventHandler. Поэтому эти обработчики могут быть также включены в цепочку событий. Обратите внимание на то, что обработчики в классах X и Y не являются статическими. Это означает, что сначала должны быть созданы объекты каждого из этих классов, а затем в цепочку событий должны быть введены обработчики, связанные с их экземплярами. Об отличиях между обработчиками экземпляра и статическими обработчиками речь пойдет в следующем разделе.


Методы экземпляра в сравнении со статическими методами в качестве обработчиков событий

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

В приведенной ниже программе создается класс X, в котором метод экземпляра определяется в качестве обработчика событий. Это означает, что каждый объект класса X должен быть зарегистрирован отдельно, чтобы получать уведомления о событиях. Для демонстрации этого факта в данной программе производится групповая адресация события трем отдельным объектам класса X.


/* Уведомления о событиях получают отдельные объекты, когда метод экземпляра используется в качестве обработчика событий. */

using System;


// Объявить тип делегата для события,

delegate void MyEventHandler() ;


// Объявить класс, содержащий событие,

class MyEvent {

  public event MyEventHandler SomeEvent;

  // Этот метод вызывается для запуска события,

  public void OnSomeEvent() {

    if(SomeEvent != null)

      SomeEvent() ;

  }

}


class X {

  int id;

  public X(int x) {

    id = x;

  }


  // Этот метод экземпляра предназначен в качестве обработчика событий,

  public void Xhandler() {

    Console.WriteLine("Событие получено объектом " + id);

  }

}


class EventDemo3 {

  static void Main() {

    MyEvent evt = new MyEvent();

    X ol = new X(1);

    X o2 = new X(2);

    X o3 = new X(3);

    evt.SomeEvent += ol.Xhandler;

    evt.SomeEvent += o2.Xhandler;

    evt.SomeEvent += o3.Xhandler;


    // Запустить событие,

    evt.OnSomeEvent() ;

  }

}


Выполнение кода из этого примера приводит к следующему результату.


Событие получено объектом 1

Событие получено объектом 2

Событие получено объектом 3


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

С другой стороны, когда в качестве обработчика событий используется статический метод, события обрабатываются независимо от какого-либо объекта, как демонстрируется в приведенном ниже примере программы.


/* Уведомления о событии получает класс, когда статический метод используется в качестве обработчика событий. */

using System;


// Объявить тип делегата для события,

delegate void MyEventHandler();

// Объявить класс, содержащий событие,

class MyEvent {

  public event MyEventHandler SomeEvent;

  // Этот метод вызывается для запуска события,

  public void OnSomeEvent() {

    if (SomeEvent != null)

      SomeEvent() ;

  }

}


class X {

/* Этот статический метод предназначен в качестве обработчика событий. */

  public static void Xhandler() {

    Console.WriteLine("Событие получено классом.");

  }

}


class EventDemo4 {

  static void Main() {

    MyEvent evt = new MyEvent();

    evt.SomeEvent += X.Xhandler;

    // Запустить событие,

    evt.OnSomeEvent();

  }

}


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


Событие получено классом.


Обратите в данном примере внимание на то, что объекты класса X вообще не создаются. Но поскольку Xhandler() является статическим методом класса X, то он может быть привязан к событию SomeEvent и выполнен при вызове метода OnSomeEvent().


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

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

Книги похожие на "C# 4.0: полное руководство" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Герберт Шилдт

Герберт Шилдт - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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

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

  1. BOT20.02.2021, 13:02
    сКОРО КУПЛЮ
А что Вы думаете о книге? Оставьте Ваш отзыв.