如果函数包含同名的局部函数,如何递归调用函数?

How to call a function recursively if it contains a local function with the same name?

我一直在研究本地函数,无法弄清楚如果主机函数包含同名的本地函数,如何调用它。

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
    }
}

您可以在调用前加上 this:

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

虽然,即使有这样的解决方法,仍然强烈建议使用更好的函数名称来更清楚地区分两者。代码 不能 对编译器来说是模棱两可的,但它 确实不应该 对于阅读它的人来说是模棱两可的。