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; } 我希望对调用函数的用户隐藏重试

我有一个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;
}
我希望对调用函数的用户隐藏重试标志

我只需要执行两次函数

我不想使函数成为静态的,我也不想为这个简单的需要声明一个外部变量,默认值是不够的。 还有其他优雅的解决方案吗?

类似的解决方案吗

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);                       
    }

尝试将“重试”设置为配置变量。基于此,您可以设置“重试”标志。谁应该决定“重试”
“重试”的值?为什么不为此声明一个字段?如果决定在生产中某个时间后不重试呢?