Как вызвать функцию рекурсивно, если она содержит локальную функцию с тем же именем? - PullRequest
0 голосов
/ 24 июня 2018

Я играл с локальными функциями и не мог понять, как вызвать функцию хоста, если она содержит локальную функцию с тем же именем.

class Program
{
    static void Main(string[] args)
    {
        new Test().Foo();

        Console.Read();
    }
}

class Test
{
    public void Foo()
    {
        Console.WriteLine("Host function");

        void Foo()
        {
            Console.WriteLine("Local function");
        }

        Foo();  // This calls the local function

        Foo();  // I would like to call the host Foo() recursively here
    }
}

1 Ответ

0 голосов
/ 24 июня 2018

Вы можете просто предвосхитить вызов с помощью this:

Foo(); // calls the local function
this.Foo(); // calls the class instance function

Хотя, даже с таким рабочим решением, как этот, все же настоятельно рекомендуется использовать лучшие имена функций для более четкого различия между ними. Код не может быть неоднозначным для компилятора, но на самом деле не должен быть неоднозначным для человека, читающего его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...