Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
  • C# - 入门
  • C# - 版本历史
  • C# - 第一个程序
  • C# - 关键词
  • C# - 类和对象
  • C# - 命名空间
  • C# - 变量
  • C# - 隐式类型变量
  • C# - 数据类型
  • 数字
  • 字符串
  • DateTime
  • 结构体
  • 枚举
  • StringBuilder
  • 匿名类型
  • 动态类型
  • 可空类型
  • C# - 值类型和引用类型
  • C# - 接口
  • C# - 运算符
  • C# - if else 语句
  • C# - 三元运算符 ?
  • C# - Switch 语句
  • C# - For 循环
  • C# - While 循环
  • C# - Do-while 循环
  • C# - 分部类
  • C# - Static 关键字
  • C# - 数组
  • 多维数组
  • 交错数组
  • C# - 索引器
  • C# - 泛型
  • 泛型约束
  • C# - 集合
  • ArrayList
  • List
  • SortedList
  • Dictionary
  • Hashtable
  • Stack
  • Queue
  • C# - 元组
  • C# - 值元组
  • C# - 内置异常
  • 异常处理
  • throw 关键字
  • 自定义异常
  • C# - 委托
  • Func 委托
  • Action 委托
  • Predicate 委托
  • 匿名方法
  • C# - 事件
  • C# - 协变
  • C# - 扩展方法
  • C# - 流 I/O
  • C# - File 类
  • C# - FileInfo 类
  • C# - 对象初始化器
  • OOP - 概述
  • 面向对象编程
  • 抽象
  • 封装
  • 关联与组合
  • 继承
  • 多态
  • 方法重写
  • 方法隐藏
  • C# - SOLID 原则
  • 单一职责原则
  • 开闭原则
  • 里氏替换原则
  • 接口隔离原则
  • 依赖倒置原则
  • 设计模式
  • 单例模式
  • 抽象工厂模式
  • 工厂方法模式
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并

C# - ArrayList

在 C# 中,`ArrayList` 是一个非泛型对象集合,其大小会动态增加。它与 Array 相同,只是其大小会动态增加。

`ArrayList` 可用于添加未知数据,您不知道数据的类型和大小。

创建 ArrayList

`ArrayList` 类包含在 `System.Collections` 命名空间中。使用 `new` 关键字创建 `ArrayList` 对象。

示例:创建 ArrayList
using System.Collections;

ArrayList arlist = new ArrayList(); 
// or 
var arlist = new ArrayList(); // recommended

在 ArrayList 中添加元素

使用 `Add()` 方法或对象初始化器语法向 `ArrayList` 中添加元素。

一个 `ArrayList` 可以包含多个 `null` 和重复值。

示例:在 ArrayList 中添加元素
// adding elements using ArrayList.Add() method
var arlist1 = new ArrayList();
arlist1.Add(1);
arlist1.Add("Bill");
arlist1.Add(" ");
arlist1.Add(true);
arlist1.Add(4.5);
arlist1.Add(null);

// adding elements using object initializer syntax
var arlist2 = new ArrayList()
                {
                    2, "Steve", " ", true, 4.5, null
                };
尝试一下

使用 `AddRange(ICollection c)` 方法将整个 Array、HashTable、SortedList、`ArrayList`、`BitArray`、Queue 和 Stack 添加到 `ArrayList` 中。

示例:将整个 Array/ArrayList 添加到 ArrayList 中
var arlist1 = new ArrayList();

var arlist2 = new ArrayList()
                    {
                        1, "Bill", " ", true, 4.5, null
                    };

int[] arr = { 100, 200, 300, 400 };

Queue myQ = new Queue();
myQ.Enqueue("Hello");
myQ.Enqueue("World!");

arlist1.AddRange(arlist2); //adding arraylist in arraylist 
arlist1.AddRange(arr); //adding array in arraylist 
arlist1.AddRange(myQ); //adding Queue in arraylist
尝试一下

访问 ArrayList

`ArrayList` 类实现了 `IList` 接口。因此,可以使用索引器访问元素,方式与数组相同。索引从零开始,每个后续元素增加一。

需要显式转换为适当的类型,或使用 var 变量。

示例:访问 ArrayList 的元素
var arlist = new ArrayList()
                {
                    1,
                    "Bill",
                    300,
                    4.5f
                };

//Access individual item using indexer
int firstElement = (int) arlist[0]; //returns 1
string secondElement = (string) arlist[1]; //returns "Bill"
//int secondElement = (int) arlist[1]; //Error: cannot cover string to int

//using var keyword without explicit casting
var firstElement = arlist[0]; //returns 1
var secondElement = arlist[1]; //returns "Bill"
//var fifthElement = arlist[5]; //Error: Index out of range

//update elements
arlist[0] = "Steve"; 
arlist[1] = 100;
//arlist[5] = 500; //Error: Index out of range
尝试一下

迭代 ArrayList

`ArrayList` 实现了支持集合类型迭代的 ICollection 接口。因此,使用 `foreach` 和 `for` 循环迭代 `ArrayList`。`ArrayList` 的 `Count` 属性返回 `ArrayList` 中元素的总数。

示例:迭代 ArrayList
ArrayList arlist = new ArrayList()
                        {
                            1,
                            "Bill",
                            300,
                            4.5F
                        };

foreach (var item in arlist)
    Console.Write(item + ", "); //output: 1, Bill, 300, 4.5, 
            
for(int i = 0 ; i < arlist.Count; i++)
    Console.Write(arlist[i] + ", "); //output: 1, Bill, 300, 4.5,
尝试一下

在 ArrayList 中插入元素

使用 `Insert()` 方法在 `ArrayList` 的指定索引处插入元素。

签名:`void Insert(int index, Object value)`

示例:在 ArrayList 中插入元素
ArrayList arlist = new ArrayList()
                {
                    1,
                    "Bill",
                    300,
                    4.5f
                };

arlist.Insert(1, "Second Item");

foreach (var val in arlist)
    Console.WriteLine(val);
尝试一下

使用 `InsertRange()` 方法在 `ArrayList` 的指定索引处插入一个集合。

签名:`Void InsertRange(int index, ICollection c)`

示例:在 ArrayList 中插入集合
ArrayList arlist1 = new ArrayList()
                {
                    100, 200, 600
                };

ArrayList arlist2 = new ArrayList()
                {
                    300, 400, 500
                };
arlist1.InsertRange(2, arlist2);

foreach(var item in arlist1)
    Console.Write(item + ", "); //output: 100, 200, 300, 400, 500, 600,
尝试一下

从 ArrayList 中删除元素

使用 `Remove()`、`RemoveAt()` 或 `RemoveRange` 方法从 `ArrayList` 中删除元素。

示例:从 ArrayList 中删除元素
ArrayList arList = new ArrayList()
                {
                    1,
                    null,
                    "Bill",
                    300,
                    " ",
                    4.5f,
                    300,
                };

arList.Remove(null); //Removes first occurance of null
arList.RemoveAt(4); //Removes element at index 4
arList.RemoveRange(0, 2);//Removes two elements starting from 1st item (0 index)
尝试一下

检查 ArrayList 中的元素

使用 `Contains()` 方法判断指定元素是否存在于 `ArrayList` 中。如果存在则返回 true,否则返回 false。

示例:检查元素
ArrayList arList = new ArrayList()
                {
                    1,
                    "Bill",
                    300,
                    4.5f,
                    300
                };

Console.WriteLine(arList.Contains(300)); // true
Console.WriteLine(arList.Contains("Bill")); // true
Console.WriteLine(arList.Contains(10)); // false
Console.WriteLine(arList.Contains("Steve")); // false
尝试一下
注意
由于性能问题,不建议使用 `ArrayList` 类。相反,使用 `List` 存储异构对象。要存储相同数据类型的数据,请使用泛型 List。

ArrayList 类

下图说明了 `ArrayList` 类。

C# ArrayList

ArrayList 属性

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

ArrayList 方法

方法描述
Add()/AddRange()Add() 方法在 ArrayList 的末尾添加单个元素。
AddRange() 方法将指定集合中的所有元素添加到 ArrayList 中。
Insert()/InsertRange()Insert() 方法在 ArrayList 的指定索引处插入单个元素。
InsertRange() 方法从 ArrayList 的指定索引开始插入指定集合的所有元素。
Remove()/RemoveRange()Remove() 方法从 ArrayList 中删除指定元素。
RemoveRange() 方法从 ArrayList 中删除一系列元素。
RemoveAt()从 ArrayList 中删除指定索引处的元素。
Sort()对 ArrayList 的所有元素进行排序。
Reverse()反转整个 ArrayList 中元素的顺序。
Contains检查指定元素是否存在于 ArrayList 中。如果存在则返回 true,否则返回 false。
Clear删除 ArrayList 中的所有元素。
CopyTo将所有元素或一系列元素复制到兼容的 Array 中。
GetRange从 ArrayList 的指定索引处返回指定数量的元素。
IndexOf搜索指定元素,如果找到则返回从零开始的索引。如果未找到元素则返回 -1。
ToArray从 ArrayList 返回兼容的数组。
延伸阅读
  • Array 与 ArrayList 的区别
  • ArrayList 的方法和属性
TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容旨在帮助所有级别的学习者轻松快速地学习技术。通过访问此平台,您确认已审阅并同意遵守我们的使用条款和隐私政策,这些条款和政策旨在保护您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。