При разработке приложений с использованием сторонних библиотек мы будем довольно часто сталкиваться со стандартными делегатами, основными из которых являются три — Action
, Predicate
и Func
. Также, использование стандартных делегатов, в некоторых случаях, позволяет немного сократить свой исходный код. Рассмотрим, что из себя представляют стандартные делегаты Action
, Predicate
и Func
.
Глава 8. Делегаты и события
Лямбда-выражения
Лямбда-выражения — это ещё один способ создания анонимных методов. Для создания лямбда выражения используется специальный символ =>
слева от которого располагается список параметров, а справа — тело анонимного метода.
Анонимные методы
Ключевое слово delegate
используется не только при определении типа делегата, но и для объявления анонимных методов. Анонимный метод в C# — это метод, который не имеет имени. Такие методы могут преобразоваться в тип делегата
События в C# и их вызов
События в C# позволяют классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций. События активно используются в Windows-приложениях. Класс, который порождает (отправляет) событие, называется издателем, а классы, обрабатывающие (принимающие) событие, называются подписчиками. Соответственно, на одно и то же событие могут подписываться несколько подписчиков.
Использование делегатов в C#
В предыдущей части мы разобрались, в общих чертах, что из себя представляют делегаты в C# и научились их вызывать. При этом за кадром остался вопрос — какую практическую пользу несут делегаты? Как они используются в реальных проектах? И сегодня мы рассмотрим один из возможных примеров использования делегатов в C#. Одно из преимуществ делегата состоит в том, что,используя его мы можем делегировать выполнение кода абсолютно любому методу с той же сигнатурой, что и у делегата.
Делегаты в C#
Делегаты в C# — это, видимо, одна из наиболее сложных, но и важных тем для изучения. Мы уже разобрались с тем, что из себя представляет переменная, какие типы данных можно использовать в C#, научились создавать и использовать свои классы и объекты и теперь нам предстоит разобраться с ещё одним типом данных в C# — делегатом.