Знаю что много было задано вопросов по этим делегатам на просторе инета, и на хабре в том числе. Но я все таки и не уловил суть этих демонов "делегатов". Я понял, что делегаты хранят ссылки на методы. Но зачем делегату хранить ссылку на метод, если можно вызвать этот метод, и без помощи делегата ? Вот даже пример из метанита, чем это:
Account ac = new Account();
ac.RegisterHandler(PrintMessage);
ac.Put(100);
void PrintMessage(string message)
{
Console.WriteLine(message);
}
class Account
{
int Sum;
public delegate void MessageHandler(string message);
public MessageHandler? mes;
public void RegisterHandler(MessageHandler reg)
{
mes = reg;
}
public void Put(int sum)
{
Sum += sum;
mes?.Invoke($"На счет было положено: {Sum}");
}
}
Лучше чем вот это:
Account ac = new Account();
ac.Put(100);
class Account
{
int Sum;
public void Put(int sum)
{
Sum += sum;
Console.WriteLine($"На счет было положено: {Sum}");
}
}
Ведь и код короче, и более читабельней вроде выглядит..
P.S - прежде чем некоторые надумают написать: "очередной гений задал вопрос, на который уже дан ответ", лучше не пишите ничего пжпжп)) Знаю что дан, но для некоторых (в том числе и для меня) доходит долго. Спасибо :)