C#中Array与ArrayList的区别
C#中经常用到的集合类Array与ArrayList是许多刚接触C#语言的人比较困惑的。这两个对象是比较有用的,而且是在很多地方适用的。这里我把自己对Array与ArrayList对象的区别总结一下,与大家分享。 主要区别: 一、Array的用法与数组几乎一样,可以看做是数组。在定义的时候需要指定长度;ArrayList的用法与普通集合一样,定义的时候不需要指定长度;当然,Array是抽象类,不能直接实例化,但是继承自它的子类可以实例化。 如:ArrayClass[] animalArray = new ArrayArrayClass[2]; //ArrayClass为继承自Array的类; 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(); } } } 运行结果如下图: |