Вот моя рекурсивная функция, чтобы получить новый город в коллекцию.Рекурсивная функция, не зацикливающая всех детей
private City getNewlyAddedCity(ObservableCollection<City> cities)
{
foreach (var city in cities)
{
if (city.IsLastAdded)
{
return city;
}
getNewlyAddedCity(city.Children);
}
return null;
}
Я называю эту функцию, как:
City newlyAddedCity = getNewlyAddedCity(ServiceLocator.Instance.Cities);
newlyAddedCity
Каждый раз, является нулевым.
Если я поставил контрольную точку и проверил, то есть город, который имеет IsLastAdded = true
.
Я также проверил использование точки останова, чтобы эта функция не пересекала все города в коллекции.
Установить 2 контрольных точки - один в «городе возвращения»; строка, другая - при «возврате null»; line - и вы узнаете, почему вы получаете null. Вы потеряли значение, которое было возвращено «getNewlyAddedCity (city.Children)»; вызов. – TSV
@TSV Я сохранил эти точки останова и проверил его. Но моя рекурсивная функция проходит через только ParentCities. – Vishal
Если всегда есть город, у которого есть 'IsLastAdded == true', то, очевидно, ваш код не перейдет к рекурсивному вызову' getNewlyAddedCity (city.Children) '. – Krumia