在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();
        }
    }
}

运行结果:

C#动态数组ArrayList的更多相关文章

  1. 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解

    数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...

  2. [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)

    [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...

  3. C#动态数组ArrayList和List<T>的比较

    C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...

  4. 关于C#中的动态数组ArrayList

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

  5. C# 集合类(一)动态数组ArrayList

    C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...

  6. 动态数组 - ArrayList

    前言 如果数组的大小要随时间变化,那么数组操作起来就比较麻烦. 在C++中,这种情况要用到动态向量Vector. 而Java中,提供了一种叫做ArrayList的泛型数组结构类型,提供相似的作用. 其 ...

  7. 动态数组ArrayList的使用

    1.定义类 package com.realhope.rmeal.bean; /** * * @author Wucy * 菜谱类 */ public class Menu{ private Inte ...

  8. C#深入研究ArrayList动态数组自动扩容原理

    1 void Test1() { ArrayList arrayList = new ArrayList(); ; ; i < length; i++) { arrayList.Add(&quo ...

  9. 常用数据结构-线性表及Java 动态数组 深究

    [Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...

随机推荐

  1. JAVA之动态编译

    通过Java动态生成class文件 今天说下JAVA中的动态编译,这个功能根据我现在的了解好像没有见到过用的,我Jio的吧,现在的一些在线代码编缉器可以用到了,这个具体我也不是很清楚.感兴趣的大家可以 ...

  2. 笔记-迎难而上之Java基础进阶2

    Set集合 import java.util.*; public class HashSetDemo{ public static void main(String[] args){ //Set接口的 ...

  3. Sanic框架

    Sanic框架 1. 入门 Sanic 是一款类似Flask的Web服务器,它运行在Python 3.5+上. 除了与Flask功能类似之外,它还支持异步请求处理,这意味着你可以使用Python3.5 ...

  4. Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) A

    Arpa is researching the Mexican wave. There are n spectators in the stadium, labeled from 1 to n. Th ...

  5. 不可见类有抽象父类,spring配置子类bean,注入父类,aop就可以切父类的方法

    public class TestBeanChild { int b = 1; public TestBean createDefault() { return new TestBeanDefault ...

  6. 爬虫(cookie)——renren模拟登陆

    工具:python3 步骤: 1)使用cookiejar.CookieJar()构建一个CookieJar()构建一个对象,用来保存cookie的值 2)使用HTTPCookieProcessor() ...

  7. TDH-常见运维指令

    1.查看cpu: cat /proc/cpuinfo | grep processor2.查看磁盘:df -h (查看磁盘使用率) df -i (查看iNode使用) fdisk -l (查看磁盘整体 ...

  8. 网页抓取解析,使用JQuery选择器进行网页解析

    最近开发一个小功能,数据库中一个基础表的数据从另一个网站采集. 因为网站的数据不定时更新,需要更新后自动采集最新的内容. 怎么判断更新数据没有? 好在网站有一个更新日志提示的地方,只需要对比本地保留的 ...

  9. windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012

    说明:安装sql server 2012时,win7和win2008r2系统都需要打sp1补丁. 1.SP1补丁下载地址(建议用迅雷下载): http://download.microsoft.com ...

  10. 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(下)

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入 ...