How can I restart a foreach
loop in C#??
For example:
Action a;
foreach(Constrain c in Constrains)
{
if(!c.Allows(a))
{
a.Change();
restart;
}
}
restart
here is like continue
or break
but it restarts the foreach from the begining
It is like setting the counter of a for
loop to 0 again..
Is that possible in C#?
Edit:I want to thank both Mehrdad Afshari and Mahesh Velaga for letting me discover a bug (index=0) in my current implementation, that would not have been discovered otherwise..
Although a very old thread - none of the answers paid due attention to the semantics of that code:
a
a
breaks any of them, try anothera
and push that through the chain.That is,
a.Change()
should be separated from the constraint checking loop, also adhering to the CQS principle:No goto, no ugly loops, just simple and clean. </self-back-slapping>
Use the good old
goto
:If you're diagnosed with gotophobia 100% of the time for some reason (which is not a good thing without a reason), you can try using a flag instead:
One way you can do that is using for, as you have already mentioned: