我将通过一个例子来解释我的问题。让我们看一下以下C#代码:
void A(Action block)
{
B(() =>
{
Console.WriteLine(2);
block();
});
}
void B(Action block)
{
Console.WriteLine(1);
block();
}
void Main()
{
A(() =>
{
Console.WriteLine(3);
});
}
这段代码的输出结果是什么?1
2
3
现在,我想在PowerShell中编写此代码:function A($block) {
B {
2
. $block
}
}
function B($block) {
1
. $block
}
A {
3
}
然而,这段代码会导致调用深度溢出:
由于调用深度达到了1001,超过了函数的最大调用深度1000,因此脚本失败了。
我发现,如果我更改函数B的参数名称,它将起作用。
这是一个特性还是一个bug(或两者兼有)?如何在PowerShell中做到不需要在不同函数之间使用唯一的参数名呢?