C#中经常用到的集合类Array与ArrayList是许多刚接触C#语言的人比较困惑的。这两个对象是比较有用的,而且是在很多地方适用的。这里我把自己对Array与ArrayList对象的区别总结一下,与大家分享。

  主要区别:

  一、Array的用法与数组几乎一样,可以看做是数组。在定义的时候需要指定长度;ArrayList的用法与普通集合一样,定义的时候不需要指定长度;

  如:Array[] animalArray = new Array[2];

  ArrayList animalArrayList = new ArrayList();

  二、Array对象在获得元素个数时通过数组的获得方式(Length属性):animalArray.Length;ArrayList对象在获得元素个数时通过集合的获得方式(Count属性):animalArrayList.Count;

  三、为Array对象赋值时,通过下标的访问方式:animalArray[1] = new Chicken("鸡鸡一");Array对象通过集合添加的方式赋值:animalArrayList.Add(new Chicken("鸡鸡二"));

  以下是针对Array与ArrayList的一个例子,其中包括一个基类Animal和两个继承类Chicken、Cow;当然主要的代码和功能在Program中。这几个类的代码分别为:

  Animal类:

  using System;

  using System.Collections.Generic;

  using System.Text;

  namespace AnimalConsole

  {

  public abstract class Animal

  {

  protected string name;

  public string Name

  {

  get

  {

  return name;

  }

  set

  {

  name = value;

  }

  }

  public Animal()

  {

  name = "没名字的动物!";

  }

  public Animal(string newName)

  {

  name = newName;

  }

  public void Feed()

  {

  Console.WriteLine("“{0}” 已经被喂养!",name);

  }

  }

  }

  Chicken类:

  using System;

  using System.Collections.Generic;

  using System.Text;

  namespace AnimalConsole

  {

  public class Chicken : Animal

  {

  public void LayEgg()

  {

  Console.WriteLine("“{0}” 已经下了一个蛋!",name);

  }

  public Chicken(string newName) : base(newName)

  {

  }

  }

  }

  Cow类:

  using System;

  using System.Collections.Generic;

  using System.Text;

  namespace AnimalConsole

  {

  public class Cow : Animal

  {

  public void Milk()

  {

  Console.WriteLine("“{0}” 已经被喂奶!",name);

  }

  public Cow(string newName) : base(newName)

  {

  }

  }

  }

  Program类:

  using System;

  using System.Collections;

  using System.Collections.Generic;

  using System.Text;

  namespace AnimalConsole

  {

  class Program

  {

  static void Main(string[] args)

  {

  Console.WriteLine("创建一个 Array 类列表集合对象并使用它:");

  Animal[] animalArray = new Animal[2];

  Cow myCow1 = new Cow("×××一");

  animalArray[0] = myCow1;

  animalArray[1] = new Chicken("鸡鸡一");

  foreach (Animal myAnimal in animalArray)

  {

  Console.WriteLine("动物 “{0}” 已经添加到 Array 类列表集合中,名叫 “{1}”",myAnimal.ToString(),myAnimal.Name);

  }

  Console.WriteLine("Array 类列表集合包含 {0} 个对象。",animalArray.Length);

  animalArray[0].Feed();

  ((Chicken)animalArray[1]).LayEgg();

  Console.WriteLine();

  Console.WriteLine("创建一个 ArrayList 类列表集合对象并使用它:");

  ArrayList animalArrayList = new ArrayList();

  Cow myCow2 = new Cow("×××二");

  animalArrayList.Add(myCow2);

  animalArrayList.Add(new Chicken("鸡鸡二"));

  foreach (Animal myAnimal in animalArrayList)

  {

  Console.WriteLine("动物 “{0}” 已经添加到ArrayList类列表集合中,名叫 “{1}”",myAnimal.ToString(),myAnimal.Name);

  }

  Console.WriteLine("ArrayList 类列表集合包含 {0} 个对象。",animalArrayList.Count);

  ((Animal)animalArrayList[0]).Feed();

  ((Chicken)animalArrayList[1]).LayEgg();

  Console.WriteLine();

  Console.WriteLine("ArrayList 的附加操作:");

  animalArrayList.RemoveAt(0);

  ((Animal)animalArrayList[0]).Feed();

  animalArrayList.AddRange(animalArray);

  ((Chicken)animalArrayList[2]).LayEgg();

  Console.WriteLine("名叫 “{0}” 的动物的索引为 {1}。",myCow1.Name,animalArrayList.IndexOf(myCow1));

  myCow1.Name = "×××三";

  Console.WriteLine("这个动物现在叫: “{0}”",((Animal)animalArrayList[1]).Name);

  Console.ReadKey();

  }

  }

  }