在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组。

一、ArrayList类的常用属性和方法

1. ArrayList类的常用属性

2. ArrayList类的常用方法

二、ArrayList类与Array类的区别

?ArrayList类实际上是Array类的优化版本。

?ArrayList只能定义一维数组,Arrays可以定义多维数组。

?ArrayList的下限始终为0,Array可以定义自己的下限。

?ArrayList的元素都是object类型的,因此需要进行装箱和拆箱操作,内存分配的代价很高,而Array的元素通常是特定类型的。

?ArrayList的元素个数可以自动扩展,Array的元素个数是固定的。

?ArrayList具有添加、删除、插入、移动和复制等方法。

三、示例
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; // 导入ArrayList的命名空间
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            // C#动态数组ArrayList-www.baike369.com
            ArrayList alist = new ArrayList();
            alist.Add("One");        // 添加对象
            alist.Add(" Two");
            Console.Write("给数组添加的元素:");
            foreach (Object obj in alist)
            { Console.Write(obj); }
            Console.WriteLine();
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.Insert(1, " c#"); // 在指定的索引位置插入元素C#
            Console.Write("在索引值为1的位置插入:");
            foreach (Object obj in alist)
            { Console.Write(obj); }
            Console.WriteLine();
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.Add("。");
            Console.WriteLine("添加。");
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.Add("---"); // 集合容量不够时,会出现位数的变化
            Console.WriteLine("添加---");
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            // 用索引方式获取集合元素值
            Console.WriteLine("3号索引的:" + alist[3]);
            // 利用contains方法,查找集合中是否包含“?”
            Console.WriteLine("数组中是否包含?:" + alist.Contains("?"));
            Console.Write("经过前面操作后的数据元素:");
            foreach (Object obj in alist)
            { Console.Write(obj); }
            Console.WriteLine();
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.Remove("。"); // 移除集合中的“。”元素
            alist.Remove("?");  // 移除集合中的“?”元素
            Console.WriteLine("没有包含?,减少1个元素,容量不变");
            foreach (Object obj in alist)
            { Console.Write(obj); }
            Console.WriteLine();
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.RemoveAt(3);  // 移除3号索引位的元素
            Console.Write("移除3号索引位的元素:");
            foreach (Object obj in alist)
            { Console.Write(obj); }
            Console.WriteLine();
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.TrimToSize();  // 缩减容量
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.Clear();       // 清除ArrayList中的所有元素
            Console.WriteLine("清除ArrayList中的所有元素后:");
            Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
            Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
            alist.TrimToSize();  // 再次缩减容量
            Console.WriteLine("再次缩减容量后,能够包含的数组元素的最多个数:"
                +alist.Capacity);
            Console.ReadLine();
        }
    }
}

运行结果:

最新文章

  1. 手势估计- Hand Pose Estimation
  2. C#中的变量及命名规则
  3. Mac下使用Apache TCPMon
  4. 10款基于HTML5+CSS3实现的超酷源码动画
  5. File类最基础知识
  6. USACO3.41Closed Fences(几何)
  7. 用状态机STATE MACHINE实现有选择的文件转换
  8. 使用Project进行挣值分析
  9. Activiti简介
  10. EasyUI 修改 Messager 消息框大小
  11. Codeforces 947F. Public Service 构造
  12. Spring事务管理transactionManager
  13. sqlserver waitfor time 延迟函数的用法
  14. web.xml中使用web前缀配置无法访问controller
  15. 重建二叉树POJ2255
  16. centos7下找不到iptables文件
  17. Spring ApplicationContext(一)初始化过程
  18. HDFS hflush hsync和close的区别
  19. HashTable和HashMap的区别详解
  20. [Erlang 0004] Centos 源代码编译 安装 Erlang

热门文章

  1. 洛谷P1013 进制位
  2. 洛谷U3348 A2-回文数
  3. css中多余文字省略号显示
  4. TensorBoard计算加速
  5. Linux .Net Core
  6. 关于AQS——独占锁特性+共享锁实现(二)
  7. D. Blocks 数学题
  8. DevExpress PivotGrid 使用记录
  9. RDL Web报表抛出ReportServerException,已取消该操作
  10. es6新语法系列,查找字符串,模板字符串