迭代器和集合

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


    public class Animals : DictionaryBase
    {
        public void Add(string newID, Animal newAnimal)
        {
            Dictionary.Add(newID, newAnimal);
        }

        public void Remove(string animalID)
        {
            Dictionary.Remove(animalID);
        }

        public Animal this[string animalID]
        {
            get
            {
                return (Animal)Dictionary[animalID];
            }
            set
            {
                Dictionary[animalID] = value;
            }
        }
    }

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

    public new IEnumerator GetEnumeator()
    {
        foreach(object animal in Dictionary.Values)
            yield return (Animal)animal;
    }

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

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

🔚