命名空间System.Collections.ArrayList,实现IList,ICollection,IEnumerable接口,相比数组,可以添加,删除等。
- public abstract class Animal//父类,抽象类
- {
- private string name;
- public string Name
- {
- set { this.name = value; }
- get { return this.name; }
- }
- public Animal() {
- this.name = "the animal no name";
- }
- public Animal(string name) {
- this.name = name;
- }
- public void Feed() => Console.WriteLine($"{name} has been fed");
- }
- //子类继承自Animal
- class Chicken:Animal
- {
- public Chicken(string name) : base(name) { }
- public void LayEgg() => Console.WriteLine($"{Name} has been Lay an Egg");
- }
- //子类继承自Animal
- class Cow:Animal
- {
- public Cow(string name) : base(name) { }
- public void Milk() => Console.WriteLine($"{Name}has been Milked");
}
- static void Main(string[] args){
- ArrayList animalArrayList = new ArrayList();
- Cow myCow2 = new Cow("Rual");
- animalArrayList.Add(myCow2);//集合animalArrayList的Add()方法
- animalArrayList.Add(new Chicken("Andrea"));
- foreach (Animal myAnimal in animalArrayList)//foreach循环输出集合内容
- {
- Console.WriteLine($"New{myAnimal.ToString()}" + $" Name={myAnimal.Name}");
- }
- Console.WriteLine(animalArrayList.Count);//集合的大小,使用Count属性获取.
- //多态性
- (animalArrayList[0] as Animal).Feed();
- ((Cow)animalArrayList[0]).Milk();
- ((Chicken)animalArrayList[1]).LayEgg();
- Console.WriteLine();
- animalArrayList.RemoveAt(0);//集合的RemoveAt()方法
- ((Animal)animalArrayList[0]).Feed();
- animalArrayList.AddRange(animalArray);//集合的AddRange()方法
- ((Chicken)animalArrayList[2]).LayEgg();
- //IndexOf()方法(IList接口)
- Console.WriteLine($"myCow1的Name={myCow1.Name}" + $" index of {animalArrayList.IndexOf(myCow1)}");
- myCow1.Name = "Marry";//修改集合中值的内容
- Console.WriteLine($"myCow1的Name={myCow1.Name}" + $" index of {animalArrayList.IndexOf(myCow1)}");
- }