这是我的递归函数,用于将新添加的城市添加到层次集合中。
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
。
我还使用Breakpoint检查过这个函数没有循环遍历集合中的所有城市。
答案 0 :(得分:2)
您正在放弃getNewlyAddedCity(city.Children);
的返回值。因此,在循环之后,函数将返回null
。
你可以这样做:
return getNewlyAddedCity(city.Children);
此外,您似乎想要获得最后添加的城市&#34;。既然您已使用ObservableCollection<T>
,为什么不考虑使用CollectionChanged
event?
答案 1 :(得分:2)
private City getNewlyAddedCity(ObservableCollection<City> cities) {
City result = null;
foreach(var city in cities) {
if(city.IsLastAdded) { return city; }
result = getNewlyAddedCity(city.Children);
if(result != null) { break; }
}
return result;
}
答案 2 :(得分:1)
你不应该
return getNewlyAddedCity(city.Children);
而不只是调用它?