から隠され、状況に応じて実行する機能を必要としています。は、私は次のようになり、C#の機能を持って、発信者
私はこの関数を2回だけ実行する必要があります。
私は関数を静的にしたくないので、この単純な必要性のために外部変数を宣言したくありません。デフォルト値では不十分です。 他にも洗練されたソリューションがありますか?
から隠され、状況に応じて実行する機能を必要としています。は、私は次のようになり、C#の機能を持って、発信者
私はこの関数を2回だけ実行する必要があります。
私は関数を静的にしたくないので、この単純な必要性のために外部変数を宣言したくありません。デフォルト値では不十分です。 他にも洗練されたソリューションがありますか?
あなたは、再試行のための終了条件が存在しないことに注意してください。この
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(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;
}
生産中にいつか再試行しないと決定したらどうなりますか? – Jagannath
ような何かを行うことができますし、答えは「何でも」は常に、その後、再帰が終了していないではない場合、我々は唯一の意志このサイトの「名前をけて」と終わります。
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;
}
UPDATE
代わりに、ブール値として再試行したのは、私は整数としてそれを持っ好むだろう。これは終了条件を制御します。
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);
}
再試行を構成変数にしてみてください。それに基づいて、再試行フラグを持つことができます。 – Jagannath
'再試行 'の価値は誰が決めるべきですか?なぜこのフィールドを宣言したくないのですか? – svick