Пример плохой! Позвольте мне попытаться объяснить:
У нас есть классная машина, машина не знает, как себя вести, человек, сидящий в машине, знает, как ее вести. Таким образом, автомобиль просит человека (делегата), отвези меня!
public delegate int DriveMeWithSpeed(int maxForceOnPedal);
public class Car
{
DriveMeWithSpeed speedy;
public Car(DriveMeWithSpeed YourSpeed)
{
speedy = YourSpeed;
}
public void Drive()
{
if (speedy != null) speedy(100);
}
}
public class Person
{
public int IDrive(int PedalForce)
{
return 40;
}
}
public static void Main(string[] args)
{
Person Me = new Person();
Car myCar = new Car(Me.IDrive);
myCar.Drive();
}
Итак, основная концепция заключается в том, что сам класс не всегда знает функциональность функции, поэтому он делегирует это классу, который знает, что делать.