Csharp/CSharp Tutorial/Data Structure/CollectionBase — различия между версиями

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

Текущая версия на 12:15, 26 мая 2010

extends CollectionBase to create your own collection

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

    class Program
    {
        static void Main(string[] args)
        {
            Animals animalCollection = new Animals();
            animalCollection.Add(new Cow("A"));
            animalCollection.Add(new Chicken("B"));
            foreach (Animal myAnimal in animalCollection)
            {
                myAnimal.Feed();
            }
        }
    }
    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("feed:"+ name);
        }
    }

    public class Chicken : Animal
    {
        public void LayEgg()
        {
            Console.WriteLine("chicken:"+name);
        }
        public Chicken(string newName): base(newName)
        {
        }
    }
    public class Cow : Animal
    {
        public void Milk()
        {
            Console.WriteLine("Milk:"+name);
        }
        public Cow(string newName): base(newName)
        {
        }
    }
    public class Animals : CollectionBase
    {
        public void Add(Animal newAnimal)
        {
            List.Add(newAnimal);
        }
        public void Remove(Animal newAnimal)
        {
            List.Remove(newAnimal);
        }
        public Animals()
        {
        }
        public Animal this[int animalIndex]
        {
            get
            {
                return (Animal)List[animalIndex];
            }
            set
            {
                List[animalIndex] = value;
            }
        }
    }