迭代器和集合

  前面曾提到,将介绍迭代器如何用于迭代存储在字典类型的集合中的对象,而不必处理DictionaryItem对象。在本章下载代码的DictionaryAnimals文件夹中,可以找到接下来这个项目的代码。下面是集合类Animals:

  1. public class Animals : DictionaryBase
  2. {
  3. public void Add(string newID, Animal newAnimal)
  4. {
  5. Dictionary.Add(newID, newAnimal);
  6. }
  7. public void Remove(string animalID)
  8. {
  9. Dictionary.Remove(animalID);
  10. }
  11. public Animal this[string animalID]
  12. {
  13. get
  14. {
  15. return (Animal)Dictionary[animalID];
  16. }
  17. set
  18. {
  19. Dictionary[animalID] = value;
  20. }
  21. }
  22. }

  可在这段代码中添加如下的简单迭代器,以便执行预期的操作:

  1. public new IEnumerator GetEnumeator()
  2. {
  3. foreach(object animal in Dictionary.Values)
  4. yield return (Animal)animal;
  5. }

  现在可使用下面的代码来迭代集合中的Animal对象了:

  1. foreach(Animal myAnimal in animalCollection)
  2. {
  3. Console.WriteLine("New {0} object added to custom collection, Name = {1}", myAnimal.ToString(), myAnimal.Name);
  4. }