集合

数组:优点:1.在内存中连续存储,可以快速而容易地从头到尾遍历元素,可以加快修改元素。

            缺点:创建时必须制定数组的大小,在两个元素之间添加元素比较困难。

集合:ArrayList是命名空间System.Collections下的一部分,实现Ilist口。

优点:1.根据使用大小按需动态增加,不用实现设置其大小的控制。

             2.可以随意的添加、插入、移除某一范围元素。

缺点:1.ArrayList不管是什么对象都是接受的,所有元素都是Object

             2.执行时,需要明确集合中的元素类型,否则会出现类型不匹配错误。

泛型:1.泛型是具有占位符的类、结构、接口和方法。

  2.需要System.Collect.Generic的命名空间,用法上在IListList

     后面加<T>.

优点:List在声明和实例化是都要指定其内部的数据或对象命名空间。


//增加命名空间
using System.Collections;
using System.Collections.Generic;
namespace 附录
{
    public partial class Form1 : Form
    {
        //声明一个集合变量,可以用接口IList,也可以直接声明“ArrayList arraylistAnimal”
        IList arraylistAnimal;

        //声明一个泛型集合变量,用接口IList,注意IList<Animal>表示此集合变量只能接受Animal类型,其他不可以。
        //也可以直接声明“List<Animal> lsitAnimal”
        IList<Animal> listAnimal;

        //动物报名按钮事件
        private void button1_Click(object sender, EventArgs e)
        {
            //实例化Arraylist对象,注意,此时并没有指定arrayAnimal的大小。这与数组并不相同。
            arraylistAnimal = new ArrayList();

            //实例化List对象,注意,此时也需要执行List<T>的“T”是Animal
            listAnimal = new List<Animal>();

            //调用集合的Add方法增加对象,其参数时object,所以new Cat和new Dog都没有问题
            arraylistAnimal.Add(new Cat("小花"));
            arraylistAnimal.Add(new Dog("阿毛"));
            arraylistAnimal.Add(new Dog("小黑"));

            listAnimal.Add(new Cat("小花"));
            listAnimal.Add(new Dog("阿毛"));
            listAnimal.Add(new Dog("小黑"));

            //从集合中删除阿毛和小黑
            arraylistAnimal.RemoveAt(1);
            arraylistAnimal.RemoveAt(1);

            listAnimal.RemoveAt(1);
            listAnimal.RemoveAt(1);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //此时遍历的ArrayList集合,而非数组
            foreach(Animal item in arraylistAnimal)
            {
                MessageBox.Show(item.Shout());
            }
            foreach (Animal item in listAnimal)
            {
                MessageBox.Show(item.Shout());
            }
        } 
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }            
    }
    //动物类
    class Animal
    {
        protected string name = "";
        public Animal(string name)
        {
            this.name = name;
        }
        //动物叫的方法
        public virtual string Shout()
        {
            return "";
        }
    }
    //小猫类
    class Cat:Animal 
    {
        public Cat(string name)
            : base(name)
        { }
        public override string Shout()
        {
            return "我的名字叫" + name;
        }
    }
    //小狗类
    class Dog:Animal
    {
        public Dog(string name)
            : base(name)
        { }
        public override string Shout()
        {
            return "我的名字叫" + name;
        }
    }    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值