问题:
你需要一个类,它包含一个对象列表,其中每个对象也包含一个对象列表。你希望以如下方式使用嵌套的foreach循环遍历外层和内层列表中的所有对象。
foreach (Group<Item> subGroup in topLevelGroup)
{
// 操作组
foreach (Item item in subGroup)
{
// 操作数据项
}
}
解决方案:
在类上实现IEnumerable<T>接口。例2-5中所示的Group类包含一个可以保存Group对象的List<T>,并且每个Group对象都包含一个List<Item>。
例2-5:在类中实现foreach功能:
public class Group<T> : IEnumerable<T>
{
public Group(string name)
{
this.Name = name;
}
private List<T> _groupList = new List<T>();
public string Name { get; set; }
public int Count => _groupList.Count;
public void Add(T group)
{
_groupList.Add(group);
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
//IEnumerator IEnumerable.GetEnumerator() => new GroupEnumerator<T>(_groupList.ToArray());
public IEnumerator<T> GetEnumerator() => _groupList.GetEnumerator();
}
public class Item
{
public Item(string name, int location)
{
this.Name = name;
this.Location = location;
}
public string Name { get; set; }
public int Location { get; set; }
}