当前位置: 首页 > news >正文

关于C#中的动态数组ArrayList

在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用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();
        }
    }
}

 原博客:http://www.cnblogs.com/melao2006/p/4241678.html

相关文章:

  • MyBatis全局配置文件MyBatis-config.xml代码
  • 初识 webpack
  • ASP .Net Core 使用 Dapper 轻型ORM框架
  • C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】
  • 如何使用公司打印机打印双页
  • JetBrains激活
  • [EWS]查找 文件夹
  • Mongodb主从配置
  • 洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型
  • c语言数据类型(一)
  • VS中 Duplicate items are not supported by the Resources parameter 解决方法
  • SaaS与本地部署该如何闯出属于自己的路?
  • 记录下sparkStream的做法(scala)
  • JavaScript总结1
  • EXTJS学习系列提高篇:第二十三篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--显示列表第二篇...
  • 03Go 类型总结
  • Git初体验
  • java 多线程基础, 我觉得还是有必要看看的
  • JS基础之数据类型、对象、原型、原型链、继承
  • Mac转Windows的拯救指南
  • mysql中InnoDB引擎中页的概念
  • pdf文件如何在线转换为jpg图片
  • tab.js分享及浏览器兼容性问题汇总
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 理清楚Vue的结构
  • 前端面试之CSS3新特性
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用docker-compose进行多节点部署
  • 双管齐下,VMware的容器新战略
  • 小程序测试方案初探
  • 硬币翻转问题,区间操作
  • 用Canvas画一棵二叉树
  • 优化 Vue 项目编译文件大小
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​Linux·i2c驱动架构​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #vue3 实现前端下载excel文件模板功能
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (差分)胡桃爱原石
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)重识new
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)