Csharp/C Sharp/Collections Data Structure/DictionaryBase

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

extends DictionaryBase

 
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);
        }
    }
}