Ich habe einfache Klasse, die Loops erstellen können:Pause Schleife innerhalb eines Delegierten
public class SimpleLoop
{
public int I { get; set; }
public Predicate<int> Condition { get; set; }
public int Increment { get; set; }
public Action<int> Action { get; set; }
public SimpleLoop(int i, Predicate<int> condition, int increment, Action<int> action)
{
I = i;
Condition = condition;
Increment = increment;
Action = action;
Invoke();
}
private void Invoke()
{
for (int i = I; Condition.Invoke(i); i += Increment)
{
Action.Invoke(i);
}
}
}
Dann kann ich auf diese Weise diese Schleife nennen:
new SimpleLoop(0, i => i <= 12, 1, delegate (int i)
{
Console.WriteLine(i);
});
Alles funktioniert gut, aber ich don ‚t wissen, wie aus der Schleife zu brechen, weil ich nicht die Schlüsselwörter break
und continue
in einem void
verwenden kann. Ich fand heraus, dass ich return
kann gleiche Wirkung wie continue
zu bekommen, aber ich kann die Schleife nicht ausbrechen.
Ich habe auch andere „Loop-Klassen“ auf der Basis dieser Klasse. Sie sehen ziemlich ähnlich aus, aber dort benutze ich einen benutzerdefinierten Delegierten anstelle von Action
Ich gehe davon aus, dass dies nur mit Code spielen ...weil es im Produktionscode fast unbrauchbar ist: \ –
Sie können einfach die aufgerufene Funktion einen boolean zurückgeben, der angibt, ob fortzufahren oder nicht ... – Nyerguds