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

时间:2018-06-24 12:02:56

标签: c# recursion local-functions

我在玩本地功能,如果包含相同名称的本地功能,我不知道如何调用主机功能。

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 :(得分:8)

您可以在呼叫前加上this

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

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