如果函数包含同名的局部函数,如何递归调用函数?
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
虽然,即使有这样的解决方法,仍然强烈建议使用更好的函数名称来更清楚地区分两者。代码 不能 对编译器来说是模棱两可的,但它 确实不应该 对于阅读它的人来说是模棱两可的。
我一直在研究本地函数,无法弄清楚如果主机函数包含同名的本地函数,如何调用它。
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
虽然,即使有这样的解决方法,仍然强烈建议使用更好的函数名称来更清楚地区分两者。代码 不能 对编译器来说是模棱两可的,但它 确实不应该 对于阅读它的人来说是模棱两可的。