C#学习16(ArrayList)

本文介绍了C#中的ArrayList集合,包括其优势如长度可变和容纳任意类型元素,以及不便之处,如需要进行类型转换。同时,详细阐述了Add、AddRange、Clear等集合操作方法,以及Count和Capacity两个属性的用途。ArrayList在超出当前容量时会翻倍申请内存空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、集合

集合相对于数组的好处:
1)、长度可变
2)、可以添加任意类型的元素
不好的地方:
从集合中取值的时候必须要不停的做类型转换

不做类型转换:

class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();//数组
            list.Add(1);
            list.Add(10.5);
            list.Add(true);
            list.Add("张三");
            Person p = new Person();
            list.Add(p);
            list.Add(new int[] { 1, 2, 3, 4, 5 });
            list.Add(list);
           
            for (int i = 0; i < list.Count; i++)
            {     
                 Console.WriteLine(list[i]);
            }
            Console.ReadKey();
        }
    }


    public class Person
    {
        public void SayHello()
        {
            Console.WriteLine("我是人类");
        }
    }

结果:
在这里插入图片描述
做类型转换:

  class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();//数组
            list.Add(1);
            list.Add(10.5);
            list.Add(true);
            list.Add("张三");
            Person p = new Person();
            list.Add(p);
            list.Add(new int[] { 1, 2, 3, 4, 5 });
            list.Add(list);
           
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i] is Person)
                {
                    ((Person)list[i]).SayHello();
                }
                else if (list[i] is int[])
                {
                    for (int j = 0; j < ((int[])list[i]).Length; j++)
                    {
                        Console.WriteLine(((int[])list[i])[j]);
                    }
                }
                else if (list[i] is ArrayList)
                { 
                    
                }
                else
                {
                    Console.WriteLine(list[i]);
                }
            }
            Console.ReadKey();
        }
    }


    public class Person
    {
        public void SayHello()
        {
            Console.WriteLine("我是人类");
        }
    }

结果:
在这里插入图片描述
2、集合的方法
Add():添加单个元素
AddRange():添加集合
Clear():清空集合中所有的元素
Remove():删除集合中的元素,括号里写谁,集合就删谁
RemoveAt():根据索引去删除集合中的元素(按单个元素处理)
RemoveRange():删除一定范围内的元素
Insert():向集合的指定位置插入一个元素
InsertRange():向集合的指定位置插入一个集合
Contains():判断集合中是否包含某个元素
Sort():升序排列 (同类型)

3、集合的两个属性

Count :获取这个集合中实际包含的元素个数
Capacity:获取这个集合可以包含的元素个数
起初两个数值都为0,添加一个元素后,向内存申请4个位置,当超过当前位置数后,翻倍申请空间。

        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            list.Add(0);
            Console.WriteLine(list.Count);
            Console.WriteLine(list.Capacity);
            Console.ReadKey();
        }

在这里插入图片描述

        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();
            list.Add(0);
            list.Add(0);
            list.Add(0);
            list.Add(0);
            list.Add(0);
            Console.WriteLine(list.Count);
            Console.WriteLine(list.Capacity);
            Console.ReadKey();
        }

在这里插入图片描述

   static void Main(string[] args)
    {
        ArrayList list = new ArrayList();
        list.Add(0);
        list.Add(0);
        list.Add(0);
        list.Add(0);
        list.Add(0);
        list.Add(0);
        list.Add(0);
        list.Add(0);
        list.Add(0);
        Console.WriteLine(list.Count);
        Console.WriteLine(list.Capacity);
        Console.ReadKey();
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值