当前位置:首页 > C#学习 > 正文内容

动态数组(ArrayList)

小道6年前 (2018-08-31)C#学习3347

ArrayList是命名空间System.Collections下的一部分,在使用该类时必须进行引用,同时继承了IList接口,提供了数据存储和检索。ArrayList对象的大小是按照其中存储的数据来动态扩充与收缩的。所以,在声明ArrayList对象时并不需要指定它的长度。

动态数组(ArrayList)代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

缺点:

因为ArrayList会把所有插入其中的数据当作为object类型来处理,在我们使用ArrayList处理数据时,很可能会报类型不匹配的错误,也就是ArrayList不是类型安全的。在存储或检索值类型时通常发生装箱和取消装箱操作,带来很大的性能耗损。

ArrayList 类的方法和属性

下表列出了 ArrayList 类的一些常用的 属性:


属性描述
Capacity获取或设置 ArrayList 可以包含的元素个数。
Count获取 ArrayList 中实际包含的元素个数。
IsFixedSize获取一个值,表示 ArrayList 是否具有固定大小。
IsReadOnly获取一个值,表示 ArrayList 是否只读。
Item获取或设置指定索引处的元素。


下表列出了 ArrayList 类的一些常用的 方法:



序号方法名 & 描述
1public virtual int Add( object value ); 
       在 ArrayList 的末尾添加一个对象。
2public virtual void AddRange( ICollection c ); 
       在 ArrayList 的末尾添加 ICollection 的元素。
3public virtual void Clear();
       从 ArrayList 中移除所有的元素。
4public virtual bool Contains( object item ); 
       判断某个元素是否在 ArrayList 中。
5public virtual ArrayList GetRange( int index, int count ); 
       返回一个 ArrayList,表示源 ArrayList 中元素的子集。
6public virtual int IndexOf(object);
       返回某个值在 ArrayList 中第一次出现的索引,索引从零开始。
7public virtual void Insert( int index, object value ); 
       在 ArrayList 的指定索引处,插入一个元素。
8public virtual void InsertRange( int index, ICollection c ); 
       在 ArrayList 的指定索引处,插入某个集合的元素。
9public virtual void Remove( object obj ); 
       从 ArrayList 中移除第一次出现的指定对象。
10public virtual void RemoveAt( int index ); 
       移除 ArrayList 的指定索引处的元素。
11public virtual void RemoveRange( int index, int count ); 
       从 ArrayList 中移除某个范围的元素。
12public virtual void Reverse();
       逆转 ArrayList 中元素的顺序。
13public virtual void SetRange( int index, ICollection c ); 
       复制某个集合的元素到 ArrayList 中某个范围的元素上。
14public virtual void Sort();
       对 ArrayList 中的元素进行排序。
15public virtual void TrimToSize();
       设置容量为 ArrayList 中元素的实际个数。

创建一个动态数组:


        static void Main(string[] args)
        {
            ArrayList al = new ArrayList();//创建一个动态数组
            al.Add(111);//可以添加整型
            al.Add("abc");//可以添加字符串
            al.Add(2113);//可以添加整型
            al.Add(455.55);//可以添加小数点
            al.Add(-10);//可以添加负数
            al.Add("123");//可以添加字符串
            al.Add(888);//可以添加整型
            al.Remove(2113);//删除整型
            Console.WriteLine(al.Contains("123"));//查找动态数组中是否包含“123”字符串。
            foreach (var i in al)//遍历动态数组。var可变的类型
            {
                Console.WriteLine(i);//输出
            }
            Console.ReadKey();
        }

输出结果:


image.png

扫描二维码推送至手机访问。

版权声明:本文由小道发布,如需转载请注明出处。

本文链接:https://www.daobk.com/post/96.html

分享给朋友:

“动态数组(ArrayList)” 的相关文章

foreach语句:依次读取数组中的元素。

foreach语句:依次读取数组中的元素。

foreach和for的区别:for可以不逐个遍历,比如每隔一个遍历一个,或者可以从后向前遍历。只能(只应该)在foreach对集合进行读,而不应该写。foreach语句:依次读取数组中的元素。         ...

字符串函数详解

字符串函数详解

字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue。例子:名字替换。取子字符串:string Substring(int startIndex),取从位置startIndex开始一直...

面向对象版聊天机器人

面向对象版聊天机器人

机器人有不同的名字、维护自己的FullLevel,可以SayHello(我叫***),可以喂食(Eat(int foodCount)),可以对它说话(Speak),对异常情况(错误的喂饭数字,喂的太多撑死了)进行处理,有两个机器人供选择,一开始通过1、2数字选择聊天机器人。  &...

继承

继承

定义类的时候不指定父类,则父类是Object类。Object类是任何类的直接或者间接父类。    class Program     {      &nbs...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。