Подтвердить что ты не робот

Рекурсивный вызов - действие лямбда

Что я здесь делаю неправильно? Как я могу выполнить свое действие?

var recurse = new Action<IItem, Int32>((item, depth) =>
{
    if (item.Items.Count() > 0) recurse(item, depth + 1); // red squiggly here

    // ...
});

Я получаю красный squiggly при вызове recurse, говорящего "метод, делегат или ожидаемое событие".


Обновление

Я принял ответ Гомама. Я просто хотел бы добавить/поделиться другим синтаксисом для одного и того же... Но который я нахожу немного проще на глазах...

Action<IEnumerable<Item>> Recurse = null;

Recurse = item =>
{
    if (item.Items != null) Recurse(item.Items);

    // ...
};
4b9b3361

Ответ 1

Просто определите делегат Action и назначьте ему нуль, прежде чем вызывать его рекурсивно.

Action<IItem, Int32> recurse = null;

Тогда

recurse = new Action<IItem, Int32>((item, depth ) =>
{
    if (item.Items.Count() > 0) recurse(item, depth + 1); // red squiggly here
    // ...
});

Удачи!