Я читал о foreach
и итерации списка, и я понимаю, как его настроить.
То, что я не смог найти на протяжении всего моего исследования, - это итерация более одного раза. Чтобы лучше объяснить, вот мой конкретный пример:
Я создаю менеджер запросов пути A *, который делит определенное количество циклов поиска на каждый запрос. Поэтому ему нужно будет выполнить итерацию своих LinkedList
запросов, раздавая один цикл поиска на каждый запрос. Учитывая, что он начинается с 1000 циклов, само собой разумеется, что он должен будет пройти через свой список запросов более одного раза, чтобы равномерно распределить все свои циклы.
Как я могу убедиться, что список будет продолжать повторяться? Будет ли это лучшей задачей для цикла while
или for
? Или есть способ сделать это с foreach
?
В случае, если это поможет кому-либо еще лучше понять мой вопрос, вот мой код, как он у меня сейчас:
//Method: UpdateSearches()
//Purpose: to distribute all available search cycles
// between all active searches
// if a search completes or fails during this
// update, this method will notify the pathfinder
// who made the request
//Parameters: none
//Returns: nothing
public void UpdateSearches()
{
//start off with a full number of cycles
int cyclesRemaining = this.searchCyclesPerUpdate;
//cycle through all active requests
foreach (Pathfinder request in this.searchRequests)
{
while ((cyclesRemaining > 0) &&
(this.searchRequests.Count != 0))
{
//one search cycle
SearchStatus result = request.OneCycle();
//if the search completes (success or failure)
if (result == SearchStatus.targetFound ||
result == SearchStatus.targetNotFound)
{
//remove this request from the queue
this.searchRequests.Remove(request);
} //end if
//move on to the next request
cyclesRemaining--;
} //end while
} //end foreach
} //end method