我正在尝试使用必要参数编写递归函数,但我不想在调用函数时使用某些参数。
我知道如何制作可选参数,但我仍然想知道是否可以制作类似私人参数的内容':
例如,一个函数,它返回一个由10:
驱动的数字static int foo(int par, private int count = 0)
{
if (count == 9)
{
return par;
}
return foo(par, count + 1) * par;
}
在函数foo中,我想要参数' count'无法访问或私密。
答案 0 :(得分:1)
您不能在方法调用中调用私有方法,只能使用完整方法。有一些重载,这是可能的:
你可以这样做:
private static int foo(int par, int count = 0)
{
if (count == 9)
{
return par;
}
return foo(par, count + 1) * par;
}
public static int foo(int par)
{
return foo(par, 0);
}
答案 1 :(得分:0)
您可以使用内部委托(作为Func<int, int>
)封装实际工作并使用闭包捕获count
(这将使您无需将count
作为参数传递):
static int foo(int par)
{
int count = 0;
Func<int, int> f = null;
f = x =>
{
if (count == 9)
return par;
count++;
return f(x) * x;
};
return f(par);
}