如果函数包含具有相同名称的本地函数,如何递归调用函数?

Mrs*_*N_C 2 c# recursion local-functions

我正在玩本地函数,如果它包含具有相同名称的本地函数,则无法弄清楚如何调用host函数.

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
    }
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 8

您可以通过以下方式添加呼叫this:

Foo(); // calls the local function
this.Foo(); // calls the class instance function
Run Code Online (Sandbox Code Playgroud)

虽然,即使有这样的工作方法,仍然强烈建议使用更好的功能名称来更清楚地区分这两者.代码对于编译器来说不能模糊,但对于阅读它的人来说,它实际上也不应该是模棱两可的.