下面是详细讲解 “C#中数组、ArrayList和List三者的区别详解及实例” 的完整攻略。
1. 数组
1.1 定义方式
数组是同一种数据类型的元素的集合,它的大小是固定的。
在 C# 中,我们可以通过以下方式定义和初始化一个数组:
int[] arr1 = new int[5]; // 定义一个包含 5 个元素的 int 数组
int[] arr2 = new int[] {1, 2, 3, 4, 5}; // 定义一个包含 5 个元素的 int 数组,并给每个元素赋值
int[] arr3 = {1, 2, 3, 4, 5}; // 省略了 new int[],同样可以定义一个包含 5 个元素的 int 数组
1.2 特点
数组有以下几个特点:
- 数组的长度是固定不变的
- 数组中的元素类型必须相同
- 可以通过索引访问数组的元素,索引从 0 开始
- 数组的在内存中是一个连续的内存块,因此访问元素的时间是固定的,即 O(1)
1.3 示例
下面来看一个简单的示例,实现将一个整型数组中所有元素的值 +1,然后输出数组:
int[] arr = {1, 2, 3, 4, 5};
for(int i = 0; i < arr.Length; i++)
{
arr[i]++;
}
foreach(int i in arr)
{
Console.Write(i + " ");
}
// 输出结果:2 3 4 5 6
2. ArrayList
2.1 定义方式
ArrayList 是一个动态长度的数组,它可以包含不同类型的元素。
在 C# 中,我们可以通过以下方式定义和初始化一个 ArrayList:
ArrayList arrList1 = new ArrayList(); // 定义一个空的 ArrayList
ArrayList arrList2 = new ArrayList() {1, "two", 3, 4.0, true}; // 定义一个包含不同类型元素的 ArrayList
2.2 特点
ArrayList 有以下几个特点:
- 可以动态地添加和删除元素,不需要像数组一样预先定义大小
- 可以包含不同类型的元素
- 可以通过索引访问元素,但因为 ArrayList 中的元素类型不同,所以取出的元素需要进行强制类型转换
- 由于 ArrayList 中的元素是一个个独立的对象(而不是一个连续的内存块),因此访问元素可能需要遍历整个列表,访问时间是 O(n)
2.3 示例
下面来看一个简单的示例,实现添加一个整型、一个字符串、一个 double 型和一个布尔型元素到 ArrayList 中,然后输出 ArrayList 中所有元素:
ArrayList arrList = new ArrayList();
arrList.Add(1);
arrList.Add("two");
arrList.Add(3.0);
arrList.Add(true);
foreach(object obj in arrList)
{
Console.Write(obj + " ");
}
// 输出结果:1 two 3 True
3. List
3.1 定义方式
List 是 .NET Framework 中的泛型类,与 ArrayList 相比,它提供了更好的类型安全和性能。
在 C# 中,我们可以通过以下方式定义和初始化一个 List:
List<int> list1 = new List<int>(); // 定义一个空的 List<int>
List<int> list2 = new List<int> {1, 2, 3, 4, 5}; // 定义一个包含 5 个 int 元素的 List<int>
3.2 特点
List 除了继承了 ArrayList 的特点外,还有以下几个特点:
- List 中的元素类型必须相同
- 取出元素时不需要进行类型转换
- 由于 List 是泛型类,编译时就可以确定其类型,比起 ArrayList 具有更好的性能
3.3 示例
下面来看一个简单的示例,实现在 List 中添加一个元素,然后输出 List 中的所有元素:
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
list.Add(6);
foreach(int i in list)
{
Console.Write(i + " ");
}
// 输出结果:1 2 3 4 5 6
总结
- 数组的长度是固定不变的,只能包含同一种类型的元素,访问元素的速度很快,但添加和删除元素比较麻烦。
- ArrayList 可以动态添加和删除元素,可以包含不同类型的元素,访问元素的速度相对较慢。
- List 继承了 ArrayList 的优点,而且具有更好的类型安全和性能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中数组、ArrayList和List三者的区别详解及实例 - Python技术站