Ich habe folgende Schleife (n). Diese Schleife durchläuft eine Sammlung von Büchern und führt einige logische Überprüfungen bezüglich der Check-in- und Check-out-Daten durch. Es gibt dann ein neues Objekt zurück. Es behaftet auch BuchtitelVerfolgen von Zählern in verschachtelten Schleifen
Es funktioniert OK bis zum Ende der Sammlung. Dann scheinen meine Zähler nicht mehr synchron zu sein und es wird zu einer Endlosschleife. Ich habe verschiedene Permiationen ausprobiert, aber ich kann es nicht richtig funktionieren lassen.
Könnte jemand einen Blick darauf werfen, ob es Sinn macht oder ob ich etwas falsch mache?
Danke!
private static readonly TimeSpan gracePeriodTimeSpan = TimeSpan.Parse("23:00");
//current posistion in books collection
currentPos = pos % books.Count;
//posistion to stop at
var stopPos = books.Count;
do
{
//start is current posistion
var startPos = pos;
//assign the next posistion
var nextPos = (pos + 1) % books.Count;
bookTitle = bookTitle + ";" + books[pos].Title;
//loop until we hit the stop posistion - check book CheckInDate/CheckOutDate proximity
while ((nextPos != stopPos || nextPos !=0) && books[pos].CheckInDate + gracePeriodTimeSpan >= books[nextPos].CheckOutDate)
{
pos = nextPos;
nextPos = (pos + 1) % books.Count;
}
bookTitle = bookTitle + ";" + books[pos].Title;
//return new book checkout object
yield return
CreateNewBookCheckout(bookTitle, books[pos], books[startPos].CheckOutDate,
books[pos].CheckInDate);
bookTitle = "";
pos = nextPos;
//keep going til we hit the stop posistion
} while (pos != stopPos);
Dank. Dies behebt die Zähler bis zum Ende. Dadurch wird das letzte Buch in der Sammlung übersprungen. – SkyeBoniwell