一.应用说明:
Array.Clear 是 C# 中 System.Array 类提供的一个静态方法,主要用于将数组中指定范围的元素重置为其数据类型的默认值。
二. 核心功能:
2.1重置而非删除** :**
Array.Clear 不会改变数组的长度(Length属性不变),也不会从内存中移除数组元素,它只是将指定位置的元素值修改为"空"或"零"。
2.2默认值规则:
根据数组元素的数据类型不同,清除后的值如下:
2.2.1值类型(如 int, double, bool, struct):重置为 0 或 false;
2.2.2引用类型(如 string, object, 自定义类):重置为 null;
三.方法重载与语法:
C# 提供了两种主要形式的 Array.Clear 调用方式:
3.1清除指定范围(最常用)
cs
//array: 要操作的数组对象。
//index: 开始清除的起始索引(从0开始)。
//length: 需要清除的元素个数。
public static void Clear(Array array, int index, int length);
3.2清除整个数组 (.NET Core 2.0+ / .NET 5+)
cs
//array: 要操作的数组对象
//将数组中的所有元素重置为默认值
public static void Clear(Array array);
3.3代码示例
3.3.1清除整型数组的部分元素,如下代码解析:元素索引 1, 2, 3 的值被重置为 int 的默认值 0;
cs
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// 从索引 1 开始,清除 3 个元素 (即索引 1, 2, 3)
Array.Clear(numbers, 1, 3);
// 输出结果: 1-0-0-0-5-6
Console.WriteLine(string.Join("-", numbers));
3.3.2清除字符串数组(引用类型),字符串是引用类型,清除后变为 null,在控制台直接打印 null 字符串时通常显示为空白;
cs
string[] names = { "Alice", "Bob", "Charlie" };
// 清除所有元素
Array.Clear(names, 0, names.Length);
// 输出结果: null null null (控制台显示为空)
foreach (var name in names)
{
Console.WriteLine(name == null ? "null" : name);
}
四.常见误区与注意事项:
4.1数组长度不变 :
执行 Array.Clear 后,array.Length 保持不变,如果你需要真正"缩小"数组或移除元素,应该使用 Array.Resize 或创建一个新的数组;
4.2异常处理 :
如果参数无效,会抛出以下异常:
4.2.1ArgumentNullException: 数组为 null;
4.2.2IndexOutOfRangeException: index 小于数组下界,或 length 小于 0,或 index + length 超过数组大小;
4.3多维数组 :
Array.Clear 同样适用于多维数组,此时 index 和 length 是基于数组在内存中的线性布局计算的(即按行优先顺序展开后的索引);
4.4性能考量 :
Array.Clear 底层通常经过优化(可能使用内存设置指令),比手动编写 for 循环逐个赋值效率更高,尤其是在处理大型数组时;
五.总结说明:
在实际开发中,若只需复用数组容器而不希望频繁分配内存,推荐使用 Array.Clear;若需动态改变集合大小,建议优先考虑使用 List<T> 等集合类;
| 操作 | 方法 | 结果 |
|---|---|---|
| 清空值 | Array.Clear(arr, 0, arr.Length) |
数组长度不变,元素变为 0/null/false |
| 调整大小 | Array.Resize(ref arr, newSize) |
创建新数组,复制旧数据,改变长度 |
| 创建新数组 | arr = new Type[newSize] |
完全替换旧数组对象,旧对象等待GC回收 |