вторник, 18 июня 2013 г.

Делегаты в C#. Простой пример

Рубрика: C#

Все-таки решил вчера посидеть и делегаты в C# изучить до конца (получить практический опыт, а не только теоретический). В теории было более-менее все понятно, но не понятным оставалось то, как работает этот механизм (на практике еще не встречался с ним).

Грубо говоря, делегат — это контейнер для функций. Все события-обработчики каких-либо действий (клик по кнопке, загрузка формы и так далее) — это тоже делегаты, их иногда еще недоделегатами называют, правда еще не разобрался, почему.

В общем, в делегат можно инкапсулировать какой-либо код, причем делегат не будет знать, что это за код (метод). Какой метод можно засунуть в делегат зависит от формы делегата. Например, в делегат:

delegate void DelName(int var);

Можно инкапсулировать метод:

void MyFunc(int var);
{
//Мой код моей функции
}

Результат и параметры у делегата и метода одинаковые. Всего многообразия использования делегатов в C# я пока не разобрал, но движусь в этом направлении. В первый день изучения делегатов я долго искал простой и понятный пример. Вот он:

1. public delegate void DelName(string message);
2. public static void DelMethod(string message)
{
MessageBox.Show(message);
}
3. …
4. //При нажатии на кнопку
5. DelName de = DelMethod;
6. de("Delegate");

Что есть что. В первой строке объявляю делегат DelName. В него можно засунуть метод, возвращающий void и принимающий строковую переменную message. Во второй строке объявляю такой метод (статический) DelMethod, который принимает строковую переменную и выводит ее в MessageBox. Все просто.

Затем, в пятой строке я создаю экземпляр делегата (de), указываю метод, который делегат должен запускать. В шестой строке передаю экземпляру делегата переменную. Экземпляр делегата передает переменную в метод, который инкапсулирован в него (DelMethod). Метод отрабатывает и появляется необходимое сообщение:

Это самый простой пример использования делегатов в C#, который я нашел. Но таким образом, как я понял, делегаты не используются. Их сфера применения шире. Так что еще изучать и изучать. Но сегодня будет первый шажок в большой мир делегатов C#.

Кстати, если вы хотите разбираться не только в делегатах C#, но еще и в питании — советую почитать сайт, на котором можно найти много полезной информации про здоровое питание. Там и о голодании рассказано, и о движении, в общем — обо все, что важно для правильного питания. Иногда читаю там некоторые статьи.


Комментариев нет:

Отправить комментарий