這裏是我的遞歸函數,以獲得新增城市的heirarchical集合。遞歸函數沒有循環遍歷所有的孩子
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」行 - 你會發現爲什麼你會得到空。你失去了「getNewlyAddedCity(city.Children)」返回的價值;「呼叫。 – TSV 2014-10-03 06:21:14
@TSV我保留了這些斷點並檢查了它。但我的遞歸函數只循環通過ParentCities。 – Vishal 2014-10-03 06:24:38
如果總有一個城市擁有'IsLastAdded == true',那麼顯然你的代碼不會去遞歸調用'getNewlyAddedCity(city.Children)'。 – Krumia 2014-10-03 06:27:46