C# Почему не получается сообщить с делегатом анонимный метод с рекурсией?


#1

Пытался создать анонимный метод с рекурсией, но в месте рекурсии выдаёт ошибку "Use of unassigned local variable 'myDelegate'", можно ли с делегатом сообщить анонимный метод с рекурсией, если да то как?

delegate int MyDelegate(int count);

static void Main()
{
    MyDelegate myDelegate = (count) =>
    {
        return (count == 0) ? 1 : count * myDelegate(count - 1);
    };
}

#2

всё очень просто, в теле анонимного метода в myDelegate не было присвоено ещё никакого значения (нету ни сообщённого метода). Для реализации рекурсии с помощью анонимного метода нужно изначально экземпляру делегата что-то присвоить, а потом присвоить анонимный метод с рекурсией. Например, вот так:

delegate int MyDelegate(int count);

static void Main()
{
    MyDelegate myDelegate = null;
    myDelegate = (count) =>
    {
        return (count == 0) ? 1 : count * myDelegate(count - 1);
    };
}

в таком случаи ошибки не будет


#3

спасибо