Шаг 187.
Язык программирования C#. Начала.
Делегаты и события. Примеры использования

    На этом шаге мы рассмотрим несколько примеров решения задач, в которых используются делегаты, лямбда-функции и события.

    Здесь мы рассмотрим несколько программ, в которых используются ранее рассмотренные делегаты, лямбда-функции и события.

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

Раскрыть/скрыть решение и комментарии.

Задание 2. Напишите программу, содержащую статический метод с тремя действительными (тип double) аргументами. Результатом статического метода является ссылка на метод, вычисляющий квадратичный трехчлен с коэффициентами, определяемыми аргументами статического метода. Другими словами, если статический метод вызывается с числовыми аргументами a, b и с, то результатом является ссылка на метод, который для аргумента x типа double результатом вычисляет значение выражения a*x*x+b*x+c.

Раскрыть/скрыть решение и комментарии.

Задание 3. Напишите программу, в которой есть класс с событием. Событие обрабатывается методами, имеющими текстовый аргумент и не возвращающими результат. У класса должно быть текстовое поле, в которое при создании объекта класса записывается название объекта. В классе должен быть описан метод для генерирования события, который вызывается без аргументов. При генерировании события аргументом передается значение текстового поля объекта, генерирующего событие. Еще один класс, описанный в программе, должен содержать метод с текстовым аргументом, не возвращающий результат. При вызове метод отображает значение своего текстового аргумента. В главном методе программы необходимо создать два объекта первого класса и один объект второго класса. Для событий объектов первого класса обработчиком регистрируется метод объекта второго класса (получается, что метод одного и того же объекта зарегистрирован обработчиком для событий двух объектов). Для каждого из объектов первого класса необходимо сгенерировать событие. При этом метод, зарегистрированный обработчиком, должен выводить название объекта, сгенерировавшего событие.

Раскрыть/скрыть решение и комментарии.

    Со следующего шага мы начнем знакомиться со перечислениями и структурами.




Предыдущий шаг Содержание Следующий шаг