Пример делегата для работы с несколькими методами

namespace ConsoleApplication1

{

class Program

{

//объявление делегата

delegate void MyDelegate(string s);

// Первый метод, на который мы будем ссылаться при помощи

// делегата. Именно он будет вызывать исключение,

// не позволяющее обратиться ко второму методу.

static void f1(string s)

{

// Выведем значение переданного параметра,

// а также уведомим пользователя о том, что данный

// метод был вызван.

Console.WriteLine("Функция 1 вызвана с параметром = {0}",s);

// Преднамеренно выбросим исключение.

throw new Exception();

}

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

static void f2(string s)

{

// Сообщим пользователю о том, что метод

// был вызван, а также выведем значение переданного параметра.

Console.WriteLine("Функция 2 вызывана с параметром = {0}",s);

}

static void Main(string[] args)

{

MyDelegate del = new MyDelegate(f1);

// Присоединим к нему еще одну функцию.

del += new MyDelegate(f2);

// Последовательно пройдем по каждому делегату, входящему

// в список вызова ранее созданного делегата.

foreach (MyDelegate d in del.GetInvocationList())

{

// вызов функции - в защищенный блок!

try

{

d("Hello");

}

// Это блок обработки исключений, произошедших

// в защищенном блоке.

catch(Exception ex)

{

// Сообщим пользователю о том, что при попытке

// вызова одной из функций произошло исключение.

Console.WriteLine("Oh mama, была обнаружена исключительная ситуация!");

}

}

Console.ReadKey(); } }}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: