» » » Герберт Шилдт - 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#.Введите сюда краткую аннотацию






  public void OnSomeEvent() {

    MyEventArgs arg = new MyEventArgs();

    if(SomeEvent != null) {

      arg.EventNum = count++;

      SomeEvent(this, arg);

    }

  }

}


class X {

  public void Handler(object source, MyEventArgs arg){

    Console.WriteLine("Событие " + arg.EventNum +

            " получено объектом класса X.");

    Console.WriteLine("Источник: " + source);

    Console.WriteLine();

  }

}


class Y {

  public void Handler(object source, MyEventArgs arg){

    Console.WriteLine("Событие " + arg.EventNum +

           " получено объектом класса Y.");

    Console.WriteLine("Источник: " + source);

    Console.WriteLine() ;

  }

}


class EventDemo6 {

  static void Main() {

    X ob1 = new X();

    Y ob2 = new Y();

    MyEvent evt = new MyEvent();


    // Добавить обработчик Handler() в цепочку событий,

    evt.SomeEvent += ob1. Handler;

    evt.SomeEvent += ob2.Handler;


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

    evt.OnSomeEvent();

    evt.OnSomeEvent();

  }

}


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


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

Источник: MyEvent


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

Источник: MyEvent


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

Источник: MyEvent


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

Источник: MyEvent


В данном примере создается класс MyEventArgs, производный от класса EventArgs. В классе MyEventArgs добавляется лишь одно его собственное поле: EventNum. Затем объявляется делегат MyEventHandler, принимающий два параметра, требующиеся для среды .NET Framework. Как пояснялось выше, первый параметр содержит ссылку на объект, формирующий событие, а второй параметр — ссылку на объект класса EventArgs или производного от него класса. Обработчики событий Handler(), определяемые в классах X и Y, принимают параметры тех же самых типов.

В классе MyEvent объявляется событие SomeEvent типа MyEventHandler. Это событие запускается в методе OnSomeEvent() с помощью делегата SomeEvent, которому в качестве первого аргумента передается ссылка this, а вторым аргументом служит экземпляр объекта типа MyEventArgs. Таким образом, делегату типа MyEventHandler передаются надлежащие аргументы в соответствии с требованиями совместимости со средой .NET.


Применение делегатов EventHandler<TEventArgs> и EventHandler

В приведенном выше примере программы объявлялся собственный делегат события. Но как правило, в этом не никакой необходимости, поскольку в среде .NET Framework предоставляется встроенный обобщенный делегат под названием EventHandler<TEventArgs>. (Более подробно обобщенные типы рассматриваются в главе 18.) В данном случае тип TEventArgs обозначает тип аргумента, передаваемого параметру EventArgs события. Например, в приведенной выше программе событие SomeEvent может быть объявлено в классе MyEvent следующим образом.


public event EventHandler<MyEventArgs> SomeEvent;


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

Для обработки многих событий параметр типа EventArgs оказывается ненужным. Поэтому с целью упростить создание кода в подобных ситуациях в среду .NET Framework внедрен необобщенный делегат типа EventHandler. Он может быть использован для объявления обработчиков событий, которым не требуется дополнительная информация о событиях. Ниже приведен пример использования делегата EventHandler.


// Использовать встроенный делегат EventHandler.

using System;


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

class MyEvent {

  public event EventHandler SomeEvent; // использовать делегат EventHandler


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

  public void OnSomeEvent() {

    if(SomeEvent != null)

      SomeEvent(this, EventArgs.Empty);

  }

}


class EventDemo7 {

  static void Handler(object source, EventArgs arg) {

    Console.WriteLine("Произошло событие");

    Console.WriteLine("Источник: " + source);

  }


  static void Main() {

    MyEvent evt = new MyEvent();

    // Добавить обработчик Handler() в цепочку событий,

    evt.SomeEvent += Handler;


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

    evt.OnSomeEvent() ;

  }

}


В данном примере параметр типа EventArgs не используется, поэтому в качестве этого параметра передается объект-заполнитель EventArgs.Empty. Результат выполнения кода из данного примера следующий.


Произошло событие

Источник: MyEvent


Практический пример обработки событий

События нередко применяются в таких ориентированных на обмен сообщениями средах, как Windows. В подобной среде программа просто ожидает до тех пор, пока не будет получено конкретное сообщение, а затем она предпринимает соответствующее действие. Такая архитектура вполне пригодна для обработки событий средствами С#, поскольку дает возможность создавать обработчики событий для реагирования на различные сообщения и затем просто вызывать обработчик при получении конкретного сообщения. Так, щелчок левой кнопкой мыши может быть связан с событием LButtonClick. При получении сообщения о щелчке левой кнопкой мыши вызывается метод OnLButtonClick(), и об этом событии уведомляются все зарегистрированные обработчики.

Разработка программ для Windows, демонстрирующих такой подход, выходит за рамки этой главы, тем не менее, рассмотрим пример, дающий представление о принципе, по которому действует данный подход. В приведенной ниже программе создается обработчик событий, связанных с нажатием клавиш. Всякий раз, когда на клавиатуре нажимается клавиша, запускается событие KeyPress при вызове метода OnKeyPress(). Следует заметить, что в этой программе формируются .NET-совместимые события и что их обработчики предоставляются в лямбда-выражениях.


// Пример обработки событий, связанных с нажатием клавиш на клавиатуре,

using System;


// Создать класс, производный от класса EventArgs и

// хранящий символ нажатой клавиши.

class KeyEventArgs : EventArgs {

  public char ch;

}


// Объявить класс события, связанного с нажатием клавиш на клавиатуре,

class KeyEvent {

  public event EventHandler <KeyEventArgs> KeyPress;

  // Этот метод вызывается при нажатии клавиши,

  public void OnKeyPress(char key) {

    KeyEventArgs k = new KeyEventArgs();

    if(KeyPress != null) {

      k.ch = key;

      KeyPress(this, k) ;

    }

  }

}


// Продемонстрировать обработку события типа KeyEvent.

class KeyEventDemo {

  static void Main() {

    KeyEvent kevt = new KeyEvent();

    ConsoleKeyInfo key;

    int count = 0;


    // Использовать лямбда-выражение для

    // отображения факта нажатия клавиши,

    kevt.KeyPress += (sender, e) =>

         Console.WriteLine(" Получено сообщение о нажатии клавиши: " + e.ch);


    // Использовать лямбда-выражение для подсчета нажатых клавиш.

    kevt.KeyPress += (sender, е) =>


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

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

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


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

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

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

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

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

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

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