0
次のループがあります。このループは書籍のコレクションを横断し、チェックインとチェックアウトの日付に関するいくつかの論理チェックを行います。次に、新しいオブジェクトを返します。また、本のタイトルを繋ぐネストされたループのカウンターの追跡
それはコレクションの終わりに達するまで正常に動作します。それから私のカウンターは同期していないように見え、それは無限ループに変わります。私は別のpermimateを試みたが、私はちょうどそれが正しく動作するようにすることはできません。
これは目を見張るものか、私が何か間違っているかどうかを誰かに見せてもらえますか?
ありがとうございます!
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);
おかげで最後の本であるためにあなたの
stopPos
を切り替える必要があります。これにより、カウンタが最後まで固定されます。これにより、ループ内の最後の本をスキップします。 – SkyeBoniwell