C# 我需要根据状态执行函数,对调用方隐藏
我有一个C#函数,如下所示:C# 我需要根据状态执行函数,对调用方隐藏,c#,recursion,hidden,C#,Recursion,Hidden,我有一个C#函数,如下所示: bool func(string name, bool retry) { string res= SomeOp(name); if(res=="whatever") { return true; } else { if(retry) return func(res, false) } return false; } 我希望对调用函数的用户隐藏重试
bool func(string name, bool retry)
{
string res= SomeOp(name);
if(res=="whatever")
{
return true;
}
else
{
if(retry)
return func(res, false)
}
return false;
}
我希望对调用函数的用户隐藏重试标志
我只需要执行两次函数
我不想使函数成为静态的,我也不想为这个简单的需要声明一个外部变量,默认值是不够的。
还有其他优雅的解决方案吗?类似的解决方案吗
public bool func(string name)
{
return func(name, true);
}
private bool func(string name, bool retry)
{
string res= SomeOp(name);
if(res=="whatever")
{
return true;
}
else
{
if(retry)
return func(res, false)
}
return false;
}
你可以这样做
public bool func(string name)
{
var retryCount = 1;
string result = string.Empty;
while (retryCount <=2)
{
result = DoSomething(name);
if(result =="Whatever")
return true;
retryCount ++;
}
return false;
}
public bool func(字符串名称)
{
var-retryCount=1;
字符串结果=string.Empty;
(retryCount注意重试没有退出条件,如果答案不是“无论如何”,那么递归不会结束,我们只会以该站点的“同名者”结束
public bool fun(string name)
{
bool retry = Properties.Resources.retry == "true";
string result = Get(name);
if (result == "whatever")
{
return true;
}
else if (retry)
{
Console.WriteLine("Retrying");
return fun(name);
}
return false;
}
更新
我宁愿将其设置为整数,而不是将retry设置为bool。这可以控制退出条件
private bool fun(string name, int retryCount)
{
string result = Get(name);
if (result == "whatever")
{
return true;
}
if (retryCount > 0)
{
return fun(name, retryCount - 1);
}
return false;
}
public static bool fun(string name)
{
bool retry = Properties.Resources.retry == "true";
int retryCount = Int32.Parse(Properties.Resources.retryCount);
return fun(name, retryCount);
}
尝试将“重试”设置为配置变量。基于此,您可以设置“重试”标志。谁应该决定“重试”
“重试”的值?为什么不为此声明一个字段?如果决定在生产中某个时间后不重试呢?