Array是.NET框架中预定义的基础引用类型,属于System命名空间,它代表一块连续的内存区域,用来存储相同类型的元素,是最原始的集合形式,在很多场景下有不可替代的作用。

Array的核心特性
内存存储特点
Array的元素在内存中是连续存储的,这意味着通过索引访问元素的时间复杂度是O(1),访问效率非常高。如果是值类型数组,所有元素会直接存储在数组分配的内存块中;如果是引用类型数组,数组内存块存储的是对应元素的引用,实际对象存放在托管堆的其他位置。
固定长度设计
Array在创建时就需要指定长度,一旦创建完成,长度就无法修改。如果需要调整数组大小,只能通过Array.Resize方法,该方法实际会创建一个新的数组,把原有元素复制到新数组中,再替换原数组的引用,并非直接修改原有数组的长度。
支持多维和交错数组
Array不仅支持一维数组,还支持多维数组(比如二维、三维数组,内存连续)和交错数组(数组的数组,每个子数组长度可以不同,内存不连续),开发者可以根据实际需求选择合适的数组形式。
Array的常用操作方法
遍历元素
遍历Array最常用的是for循环和foreach循环,for循环可以通过索引修改元素,foreach循环更适合只读遍历,示例如下:
using System;
class Program
{
static void Main()
{
int[] intArray = { 1, 2, 3, 4, 5 };
// for循环遍历并修改元素
for (int i = 0; i < intArray.Length; i++)
{
intArray[i] = intArray[i] * 2;
}
// foreach循环只读遍历
foreach (int item in intArray)
{
Console.WriteLine(item);
}
}
}排序与查找
Array类提供了静态的Sort方法可以对数组元素进行排序,BinarySearch方法可以在已排序的数组中进行二分查找,示例如下:
using System;
class Program
{
static void Main()
{
string[] strArray = { "banana", "apple", "orange", "grape" };
// 排序数组
Array.Sort(strArray);
Console.WriteLine("排序后的数组:");
foreach (string item in strArray)
{
Console.WriteLine(item);
}
// 二分查找元素
int index = Array.BinarySearch(strArray, "apple");
Console.WriteLine($"apple的索引是:{index}");
}
}复制与清空
可以使用Array.Copy方法把一个数组的元素复制到另一个数组,使用Array.Clear方法清空数组指定范围的元素,示例:
using System;
class Program
{
static void Main()
{
int[] sourceArray = { 1, 2, 3, 4, 5 };
int[] targetArray = new int[3];
// 复制前3个元素到目标数组
Array.Copy(sourceArray, targetArray, 3);
Console.WriteLine("复制后的目标数组:");
foreach (int item in targetArray)
{
Console.WriteLine(item);
}
// 清空sourceArray的前2个元素
Array.Clear(sourceArray, 0, 2);
Console.WriteLine("清空后的源数组:");
foreach (int item in sourceArray)
{
Console.WriteLine(item);
}
}
}Array与其他集合的对比
和List<T>、ArrayList等集合相比,Array的优势是访问效率高、内存开销小,适合元素数量固定、需要频繁按索引访问的场景;缺点是长度固定,插入删除元素效率低。如果元素数量经常变化,或者需要频繁插入删除,更适合使用List<T>这类动态集合。开发者可以根据实际场景选择合适的集合类型,平衡开发效率和运行性能。