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哈哈~