集合——Array和ArrayList的使用

来源:互联网 发布:mac版ps cs6破解补丁 编辑:程序博客网 时间:2024/05/18 08:05

1、Array和ArrayList的使用

System.Array类(这是一个简单的数字)和System.Collections.ArrayList类(使用更加的高级)

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Collections;namespace 集合{    class Program    {        static void Main(string[] args)        {            #region  利用的是Array类型            Console.WriteLine("Create an Array type collection of Animal"+"objects and use it:");            Animal[] animalArray = new Animal[2];   //建立一个Animal的数组   建立Array的类的标准形式   “类名[] 实例名称= new 类名”                 Cow myCow1 = new Cow("Deirdre");            animalArray[0] = myCow1;            animalArray[1] = new Chicken("Ken");            foreach(Animal myAnimal in animalArray){                Console.WriteLine("New {0} object added to Array collection,"+"Name={1}",myAnimal.ToString(),myAnimal.Name);            }            Console.WriteLine("Array collection contains {0} objects.",animalArray.Length);  //Array的长度  animalArray是Array类型            animalArray[0].Feed();//调用Feed函数            ((Chicken)animalArray[1]).LayEgg();// 强制进行转化            Console.WriteLine();//产生空白行            #endregion            #region    利用的是ArrayList类型   优点:可以不具体指定空间的大小            Console.WriteLine("Create an ArrayList type collection of Animal"+"objects and use it:");            ArrayList animalArrayList = new ArrayList();            Cow myCow2 = new Cow("Hayley");            animalArrayList.Add(myCow2);      //添加            animalArrayList.Add(new Chicken("Roy"));            foreach(Animal myanimal in animalArrayList){                Console.WriteLine("New {0} object added to ArrayList collection ,"+"Name ={1}",myanimal.ToString(),myanimal.Name);            }            Console.WriteLine("ArrayList collection contains {0} objects.",animalArrayList.Count);            ((Animal)animalArrayList[0]).Feed();            ((Chicken)animalArrayList[1]).LayEgg();            Console.WriteLine();            #endregion            #region   ArrayList高级功能            Console.WriteLine("Additional manipulation of ArrayList:");            animalArrayList.RemoveAt(0);   //移除            ((Animal)animalArrayList[0]).Feed();            animalArrayList.AddRange(animalArray);//将现有的集合作为一个参数,将其内容复制到新的实例中            ((Chicken)animalArrayList[2]).LayEgg();            Console.WriteLine("The animal is now called {0}.",myCow1.Name,((Animal)animalArrayList[1]).Name);            #endregion            Console.ReadKey();        }    }}

效果展示:
这里写图片描述

2、Array和ArrayList的一些区别

(1)集合的创建
Array:只有用固定的大小来初始化数组,然后使用

Animal[] animalArray = new Animal[2];

ArrayList:不需要初始化其大小,可以创建ArrayList的列表

ArrayList animalArrayList = new ArrayList();

[注:]这个类还有另外两个构造函数,第一个构造函数可以把现有的集合作为一个参数,将其内容复制到新的实例中;另一个构造函数可以通过一个参数设置集合的容量,但这个并不是绝对容量,当集合中的项数超过这个值时,容量会自动增加一倍。

(2)初始化赋值
Array:

Cow myCow = new Cow("Deirdre");animalArray[0] = myCow;anmialArray[1] = new Chicken("Ken");

ArrayList:对于ArrayList集合,它没有现成的项,也没有NULL引用的项。这样不能以相同的方式给索引赋予新实例。

Cow myCow2 = new Cow("Hayley");animalArrayList.Add(myCow2);animalArrayList.Add(new Chicken("Roy"));

(3)求长度
Array:

animalArray.length

ArrayList:

animalArrayList.Count

(4)访问集合
Array:简单数组是强类型化的,可以直接访问它们所包含的项类型,所以可以直接调用项的方法:

animalArray[0].Feed();

数组类型是抽象类型Animal,因此不能直接调用由派生类产生的方法,而必须使用数据类型转换:

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

ArrayList:ArrayList集合是System.Object对象的集合(通过多态性付给Animal对象),所以必须对所有的项进行数据类型转换:

((Animal)animalArrayList[0]).Feed();((Chicken)animalArrayList[1]).LayEgg();

3、ArrayList的一些高级用法

animalArrayList[0].Remove();animalArrayList[0].RemoveAt();animalArrayList[0].AddRange();

菜鸟学习,根据自己的理解整理的《C#入门经典》的笔记,如有错误,请指出,谢谢!O(∩_∩)O哈哈~

0 0