Ich habe diesen Code:seltsame Verhalten mit rekursive Funktion
public void myFunction(String label, String type, string command, int attempts = 0)
{
try
{
Utility.Logger("myFunction attempt " + attempts.ToSafeString() + " label " + label + " type " + type, command);
...stuff...
}
catch (Exception e)
{
if (attempts < 10)
return myFunction(label, type, command, attempts++);
else
return null;
}
}
Wie Sie sehen können, habe ich einen rekursiven Aufruf in der Fangzweig, wo ich einen Parametersatz einen Zähler = Zähler + 1
Der seltsame Punkt ist, ich habe immer Versuche = 0 in meinem Protokoll. Warum? Was vermisse ich?
Fallen Sie tatsächlich in Fangen? Und selbst wenn Sie jedes Mal, wenn Sie dort gehen Versuche Null Wert wird zurückgesetzt Sie vorbei. – johnyTee
'Versuche ++' wird _old_ Wert zurück und dann Wert um 1 erhöhen. So Sie immer 0 an Ihre rekursive Funktion übergeben. Ändern Sie das in "++ Versuche" oder besser nicht in einem solchen Kontext und erhöhen Sie einfach außerhalb des Funktionsaufrufs. – Evk