关于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(, " 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[]);
// 利用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号索引位的元素
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
关于C#中的动态数组ArrayList的更多相关文章
- (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)
目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...
- C#动态数组ArrayList和List<T>的比较
C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- C#动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类的常用属性和方法 1. ArrayList类 ...
- C# 集合类(一)动态数组ArrayList
C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...
- [C] 在 C 语言编程中实现动态数组对象
对于习惯使用高级语言编程的人来说,使用 C 语言编程最头痛的问题之一就是在使用数组需要事先确定数组长度. C 语言本身不提供动态数组这种数据结构,本文将演示如何在 C 语言编程中实现一种对象来作为动态 ...
- 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式 - mv-expand
问题描述 想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在Azure Resource Graph Expl ...
- 动态数组 - ArrayList
前言 如果数组的大小要随时间变化,那么数组操作起来就比较麻烦. 在C++中,这种情况要用到动态向量Vector. 而Java中,提供了一种叫做ArrayList的泛型数组结构类型,提供相似的作用. 其 ...
随机推荐
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
#include <iostream> #include <stdio.h> #include <cstdlib> #include <cstring> ...
- org.apache.ibatis.binding.BindingException: Type interface XXX is not known to the MapperRegistry.
动态代理因为namespace的地方写错了
- Qt打包成单独可执行的exe文件
1.将图标newIco.ico复制到工程目录下. 2.在工程目录下新建空白txt文档,添加以下内容. IDI_ICON1 ICON DISCARDABLE "newIco.ico" ...
- Qt.常用代码整理
窗口全屏化(此方法只对顶级窗口有效,对子窗口无效) window.showFullScreen() 字符串处理 Qt还提供了一种方便的字符串组合方式,使用QString::arg()函数,此函数的重载 ...
- C# 8.0的新的using语法——Using declarations
我们在代码中经常使用using保障非托管资源的释放 static void Main(string[] args) { using (var options = Parse(args)) { if ( ...
- SQL Server 导出Excel有换行的解决方法
参考地址::https://vcoo.cc/blog/1234/ 从 SQL Server 查询结果中复制结果数据粘贴到 Excel 中存在这么个问题:如果字段内容中有换行符,那么粘贴到 Excel ...
- cocos2d-x 学习资源
1. http://cocos2d.cocoachina.com/resource(中文),也有示例,文中缺少的图片可以从下面的网址下载 对应的英文是: http://cocos2d-x.org/wi ...
- Android进程命令查看
• 进程 是指一个具有独立功能的程序在某个数据集上的一次动态运行过程,它是系统进行资源分配和调度的最小单元. • 一个进程能够拥有多个线程.每一个线程必须有一个父进程. • ...
- SpringBoot集成Redis分布式锁以及Redis缓存
https://blog.csdn.net/qq_26525215/article/details/79182687 集成Redis 首先在pom.xml中加入需要的redis依赖和缓存依赖 < ...
- 通过action传过来的值在option获取进行验证
通过action传过来的值在option获取进行验证的方法: for(var i=0;i<document.getElementById("ufacilityType").o ...