- •Введение в программирование на c# в .Net Что такое .Net и зачем она нужна?
- •Первая программа на c# и основные приемы работы в системе ms Visual Studio
- •Структура программы
- •Собственные пространства имен
- •Особенности языка c#
- •Полноценный логический тип данных
- •Оператор switch
- •Основные классы
- •Класс Console
- •Класс Convert
- •Строковый тип данных string (класс String)
- •Метод Split
- •Enumeration – перечислимый тип
- •Метод IndexOf()
- •Метод Format
- •Метод ToCharArray
- •Объектно-ориентированное программирование Эволюция от структур к классам Используем структуры
- •Структурный тип как параметр
- •Помещаем метод в структурный тип
- •Превращение в класс
- •Классы и объекты
- •Значимые и ссылочные переменные
- •Конструкторы класса
- •Статические элементы
- •Генерация случайных чисел
- •Массивы в языке c#
- •Многомерные массивы
- •Класс ArrayList
- •Инкапсуляция
- •Обработка ошибок
- •Свойства класса
- •Язык uml
- •Связи между объектами
- •Наследование (Inheritance)
- •Класс Object
- •Защищенные переменные
- •Вызов базового конструктора
- •Переопределение методов. Обращение к «затененным» элементам класса
- •Многоуровневое наследование
- •Полиморфизм
- •Метод ToString
- •Типичные ситуации проявления полиморфизма
- •Абстрактные классы и полиморфизм
- •Литература
- •Лекция 21. События Классы с событиями
- •Класс sender. Как объявляются события?
- •Делегаты и события
- •Как зажигаются события
- •Классы receiver. Как обрабатываются события
- •Классы с событиями, допустимые в .Net
- •Пример «Списки с событиями»
- •Две проблемы с обработчиками событий
- •Классы с большим числом событий
- •Проект «Город и его службы»
- •Вариант 1
- •Обработчик события:
- •Отметьте истинные высказывания:
- •Вариант 2
- •Вариант 3
- •Отметьте истинные высказывания:
- •Все аргументы события принадлежат:
Вариант 1
Обработчик события:
всегда принадлежит классу, зажигающему событие;
никогда не принадлежит классу, зажигающему событие;
может принадлежать классу, зажигающему событие;
принадлежит только одному классу, слушающему событие;
может принадлежать многим классам, слушающим события.
Отметьте истинные высказывания:
все события имеют одинаковую сигнатуру из двух аргументов с одними и теми же типами;
все события имеют сигнатуру из двух аргументов, но с отличающимися типами;
все события, не имеющие собственных аргументов, передаваемых обработчику, соответствуют стандартному встроенному делегату EventHandler;
для класса с большим числом событий целесообразно применять динамическое связывание;
для связывания событий с обработчиком можно применять только операцию +=.
Объявление события в классе может представлять собой:
объявление метода класса;
объявление поля класса;
объявление процедуры-свойства класса с методами get и set;
объявление процедуры-свойства класса с методами add и remove.
Вариант 2
Объекты одного класса:
имеют одинаковый набор событий;
в процессе вычислений зажигают одинаковый набор событий;
в процессе вычислений зажигают набор событий, характерный для объекта;
в разных сеансах работы зажигают одинаковый набор событий;
в разных сеансах работы зажигают разные события.
Отметьте истинные высказывания:
класс, обрабатывающий событие, может отсоединить других обработчиков события и полностью определить реакцию на событие;
каждый объект определяет, какой обработчик присоединяется к событию;
метод GetInvocationList не применим к событиям;
все события имеют одну и ту же сигнатуру.
Класс EventHandler:
является классом, которому принадлежат все события;
является абстрактным классом и не может иметь экземпляров;
является родительским классом для событий, не имеющих собственных аргументов;
является потомком класса Delegate;
накладывает ограничения на сигнатуру события.
Вариант 3
Процедура, в которой зажигается событие:
передает обработчику событий входные аргументы и продолжает свою работу;
передает обработчику событий входные аргументы и ждет окончания работы первого обработчика, связанного с событием;
передает обработчику событий входные аргументы и ждет окончания работы всего списка обработчиков, связанного с событием;
может получить от обработчиков выходные аргументы и использовать их в своей работе.
Отметьте истинные высказывания:
события – это специализированный вариант делегатов;
к каждому событию должен быть присоединен хотя бы один обработчик события;
методы Combine и Remove, наследованные от класса Delegate не применимы к событиям;
допустимо динамическое связывание событий с обработчиками событий.
Все аргументы события принадлежат:
классу EventArgs;
классу EventArgs, за исключением аргумента, задающего объект, зажигающий событие;
потомку класса EventArgs;
потомку класса EventArgs за исключением аргумента, задающего объект, зажигающий событие;
возможно разным классам.
