集合——Array和ArrayList的使用

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值