Объявление и использование делегатов в C# (си шарп)

Делегат в C# (си шарп) – это класс,  который хранит ссылку на метод.  С  помощью делегата в C# (си шарп) можно передавать имя функции в качестве аргумента. Можно  сказать, что делегат служи оболочкой для существующего метода. Делегат является  производной от встроенного во Framework класса  Delegate.

Чтобы использовать делегат, нужно создать его экземпляр, который  является объектом. Этот объект можно передавать как параметр или назначать ему  свойство. Поэтому метод может вызывать делегат и принимать его в качестве  параметра. Делегат может ссылаться на любой тип объекта, если для этого объекта  есть метод.
Рассмотрим использование  делегата на простом примере. Объявление делегата похоже на объявление метода, с  добавлением ключевого слова delegate. Объявим делегат целого типа integer  с именем BinaryOp. У делегата обязательно должны быть объявлены  параметры. У нас их два: int x, int y. Затем объявляем класс SimpleMath, и  создаем в нем два метода, сложение (Add) и вычитание (Subt).  Сейчас мы научимся в головной программе вызывать метод Add() через делегат.
public delegate int BinaryOp(int x, int y);
public class SimpleMath
{
public static int Add(int x, int y)
{ return x+y; }
public static int Subt (int x, int y)
{ return x-y; }
}
//головная программа
// создание объекта BinaryOp, указывающего на SimpleMath.Add():

BinaryOp b = new BinaryOp(SimpleMath.Add);
// Вызов метода Add() с помощью делегата:
Console.WriteLine(«10+10 равно {0}», b(10,10));

В головной программе мы  создали экземпляр b для делегата  BinaryOp, и использовали делегат как метод, то есть, выражаясь профессиональным  языком, вызвали делегат для созданного экземпляра. Вызов метода Add, выполненный в делегате, передается  делегатом в этот метод. Делегат передает в метод параметры (10,10), метод  возвращает значение, а делегат передает его в вызывающий объект.
Делегаты в C# (си шарп) используются для обеспечения генерации,  перехвата и обработки событий. При обмене событиями отправитель не знает, какой  объект будет получать события. Между отправителем и получателем необходим  посредник для передачи аргументов, роль которого и выполняет делегат.

. примеры программ си шарп
. c# передача метода в качестве параметра
Комментирование и размещение ссылок запрещено.