您的位置:首页 > 编程语言 > C#

C#中Array与ArrayList的区别

2008-12-11 12:40 801 查看
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();
}
}
}
运行结果如下图:



摘自:http://hi.baidu.com/syg19850108/blog/item/e6f6a430ecd16aae5fdf0ee8.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: