详解c#中Array,ArrayList与List的区别、共性与相互转换
区别
- Array是定长的,一旦分配完内存大小,就不能再改变,而ArrayList、List
是动态长度数组。 - Array中只能存储单一数据类型,而ArrayList、List
则可以存储不同类型的数据。 - ArrayList内部存储对象,每次使用都需要进行拆箱和装箱操作,而List
则是类型安全的,不需要进行拆箱和装箱操作。 - Array性能优于ArrayList、List
,这是由于Array存储的是静态类型,内存空间是连续分配的,而ArrayList、List 需要额外的内存空间来存储元数据,这种开销很大程度上增加了操作的耗时。
共性
- 都是可以存储一组数据的数据结构。
- 都可以通过下表进行访问,下标从0开始计数。
- 都可以使用foreach遍历。
- 都是支持泛型的。
相互转换
Array和ArrayList的相互转换
// 将Array转换为ArrayList
int[] arr = {1, 2, 3, 4};
ArrayList arrayList = new ArrayList(arr);
// 将ArrayList转换为Array
int[] anotherArr = (int[])arrayList.ToArray(typeof(int));
Array和List的相互转换
// 将Array转换为List<T>
int[] arr = {1, 2, 3, 4};
List<int> list = new List<int>(arr);
// 将List<T>转换为Array
int[] anotherArr = list.ToArray();
示例说明
示例1:在计算学生的平均成绩时,使用List实现
代码示例如下:
List<int> grades = new List<int>();
grades.Add(85);
grades.Add(92);
grades.Add(78);
grades.Add(90);
int sum = 0;
foreach (int grade in grades) {
sum += grade;
}
double average = (double)sum / grades.Count;
Console.WriteLine("The average grade is: " + average);
示例2:使用Array实现冒泡排序
代码示例如下:
int[] arr = {5, 3, 8, 4, 2};
for (int i = 0; i < arr.Length - 1; i++) {
for (int j = 0; j < arr.Length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
foreach (int num in arr) {
Console.Write(num + " ");
}
以上就是c#中Array、ArrayList和List
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解c#中Array,ArrayList与List