Csharp/C Sharp by API/System.Collections/DictionaryBase

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

extends DictionaryBase

<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; using System.Text; public abstract class Animal {

   protected string name;
   public string Name {
       get {
           return name;
       }
       set {
           name = value;
       }
   }
   public Animal() {
       name = "The animal with no name";
   }
   public Animal(string newName) {
       name = newName;
   }
   public void Feed() {
       Console.WriteLine("{0} has been fed.", name);
   }

} public class Chicken : Animal {

   public void LayEgg() {
       Console.WriteLine("{0} has laid an egg.", name);
   }
   public Chicken(string newName)
       : base(newName) {
   }

} public class Cow : Animal {

   public void Milk() {
       Console.WriteLine("{0} has been milked.", name);
   }
   public Cow(string newName)
       : base(newName) {
   }

} public class Animals : DictionaryBase {

   public void Add(string newID, Animal newAnimal) {
       Dictionary.Add(newID, newAnimal);
   }
   public void Remove(string animalID) {
       Dictionary.Remove(animalID);
   }
   public Animals() {
   }
   public new IEnumerator GetEnumerator() {
       foreach (object animal in Dictionary.Values)
           yield return (Animal)animal;
   }
   public Animal this[string animalID] {
       get {
           return (Animal)Dictionary[animalID];
       }
       set {
           Dictionary[animalID] = value;
       }
   }

} class Program {

   static void Main(string[] args) {
       Animals animalCollection = new Animals();
       animalCollection.Add("A", new Cow("A"));
       animalCollection.Add("B", new Chicken("B"));
       foreach (Animal myAnimal in animalCollection) {
           Console.WriteLine(myAnimal.ToString() + myAnimal.Name);
       }
   }

}


 </source>