Как работает лямбда-выражение
есть такая вот программа
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 => { }. Анонимный метод?