Обычно делегат запускает любое количество методов, на которые вы подписаны. Они должны соответствовать параметрам и типу возвращаемого значения (это называется «подпись»), то есть, если ваш делегат берет два целых и возвращает пустое значение:
public delegate void MyDelegate(int i1, int i2);
Методы, на которые вы подписываетесь, должны принимать две строки и возвращать пустоту:
public void Add(int int1, int int2)
{
MessageBox.Show((int1 + int2).ToString());
}
public void Multiply(int int1, int int2)
{
MessageBox.Show((int1 * int2).ToString());
}
А теперь подпишитесь, запустите и посмотрите результаты:
public void SubscribeAndRun()
{
MyDelegate d = new MyDelegate(Add);
d += Multiply;
d.Invoke(2, 3);
}
Делегаты широко используются для вызова других методов, когда происходит событие. В C # события являются делегатами, инкапсулированными для использования add и remove (для добавления или удаления методов, которые событие будет запускать при его запуске).