Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен в гаи redacted.doc
Скачиваний:
5
Добавлен:
27.09.2019
Размер:
676.35 Кб
Скачать

3.Как метод выберет компилятор?

class A { public void Test(int n) { Console.WriteLine("A"); } }

class B : A { public void Test(double n) { Console.WriteLine("B"); } }

static void Main(string[] args)

{

B b = new B();

b.Test(5);

}

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

Экзаменационный билет №15

1. Понятие события

События (events) определяют реакцию класса на те или иные действия пользова­теля (на перемещение мыши, например) или на изменения в работающей про­грамме (например, как реакция на возникновение исключительной ситуации). С событиями связываются делегаты – специальные объекты, которым передает­ся управление при возникновении события. Для объявления события использу­ется зарезервированное слово event, для объявления делегата – delegate.

Объекты на одном из этапов обработки могут генерировать (и потреблять) собы­тия (event). События являются важными вхождениями, в связи с которыми в других частях кода могут выполняться определенные действия, подобные, но более мощные, чем генерация исключений. Например, может быть необходимо, чтобы при добав­лении объекта Animal в коллекцию Animals выполнялся определенный код, не яв­ляющийся ни частью класса Animals, ни частью того кода, который вызывает метод Add(). Чтобы добиться такого поведения, потребуется добавить в код обработчик со­бытий, представляющий собой функцию особого вида, которая вызывается при воз­никновении события. Кроме того, потребуется также сконфигурировать этот обра­ботчик, чтобы он ожидал поступления именно интересующего события.

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

События похожи на исключения тем, что они тоже генерируются, т.е. выдаются объектами, и тем, что для них тоже можно предоставлять реагирующий на них выполнением какого-нибудь действия код. Однако существует и несколько отличий, наиболее важное из которых состоит в отсутствии для обработки событий структуры, эквивалентной try. . . catch. Вместо применения этой структуры на события нужно подписываться (subscribe). Под подпиской на событие подразумевается предоставление кода, который должен выполняться при генерации данного события, в виде обработчика событий (event handler). На событие можно подписывать несколько обработчиков, которые тогда все будут вызываться при генерации этого события. Эти обработчики могут являться как частью того класса объекта, который генерирует данное событие, так и частью других классов. Сами обработчики событий представляют собой просто функции. Единственным ограничением для такой функции является то, что ее возвращаемый тип и параметры должны обязательно соответствовать тем, которых требует событие. Это ограничение входит в состав определения события и задается делегатом. Тот факт, что делегаты используются в событиях, как раз и делает их такими полезными. Базовая последовательность обработки выглядит следующим образом: сначала приложение создает объект, который может генерировать событие.