Как работает лямбда-выражение

есть такая вот программа

class Charging
{
    public Func<int, bool> BuildBattery(int capacity)
    {
        int rest = capacity;
        return delta =>
        {
            rest -= delta;
            if (rest < 0)
                return false;
            Console.Write(rest);
            return true;
        };
    }
}
class Program
{ 
    static void Main(string[] args)
    {
        var charge = new Charging();
        var battery = charge.BuildBattery(7);
        for (var attempt = 1; battery(attempt); attempt++)
            Console.Write("+");
    }
}
  • Интересует как работает лямбда-выражение в делегате BuildBattery. Поставил точку останова на
    return delta =>, и при запуске программы она сработала, только потом зашла в Main. Интересно почему так.
  • Также интересует, почему каждый раз, когда происходит обращение к return delta значение delta увеличивается на 1. За счёт чего это происходит?
  • Ну, и хотелось бы узнать как правильно называть эту конструкцию return delta => { }. Анонимный метод?

Ответы (0 шт):