一、数组基础属性回顾
所有数组自带三个核心属性:
cs
int[] nums = { 1, 2, 3, 4, 5, 6 };
Console.WriteLine(nums.Length); // 获取元素总个数:6
Console.WriteLine(nums.Rank); // 获取数组维度:1(一维数组)
Console.WriteLine(nums.LongLength); // 64位长度,超大数组使用:6
二、Array.Clear() 清空数组元素
1. 作用
将数组指定范围的元素重置为默认值:
-
值类型(int、double、bool)→ 0 / false
-
引用类型(string、自定义类)→ null
2. 语法
Array.Clear(数组, 起始下标, 清空长度);
3. 代码案例
cs
int[] nums = { 1, 2, 3, 4, 5, 6 };
// 从下标1开始,清空3个元素
Array.Clear(nums, 1, 3);
Console.WriteLine(string.Join("-", nums));
// 输出:1-0-0-0-5-6
解析:下标1、2、3 的元素被重置为 int 默认值 0
三、Array.Copy() 数组拷贝(重中之重)
1. 简单重载(整段复制)
语法:Array.Copy(原数组, 目标数组, 复制长度);
cs
int[] nums1 = { 1, 2, 3, 4 };
int[] nums2 = new int[nums1.Length]; // 创建空目标数组
// 复制nums1中4个元素到nums2
Array.Copy(nums1, nums2, 4);
// 修改原数组
nums1[0] = 100;
Console.WriteLine(string.Join("-", nums2));
// 输出:1-2-3-4 不受影响
2. 深浅拷贝核心区别(必考)
-
数组存值类型(int、double、bool) :Copy 是值拷贝 修改原数组,不会影响目标数组,互相独立
-
数组存引用类型(对象、数组) :Copy 是地址拷贝(浅拷贝) 修改原数组内容,会同步影响目标数组
3. 完整重载(精准区间复制)
语法:Array.Copy(原数组, 原起始下标, 目标数组, 目标起始下标, 复制个数);
cs
int[] nums1 = { 1, 2, 3, 4 };
int[] nums2 = new int[4];
// 从原数组下标1开始,复制2个元素,放到目标数组下标1位置
Array.Copy(nums1, 1, nums2, 1, 2);
Console.WriteLine(string.Join("-", nums2));
// 输出:1-2-3-0
4.=和copy的区别
| 操作 | 值类型(int/double) | 引用类型(数组 / List / 对象) | 结果 |
|---|---|---|---|
= |
复制数据 | 复制地址(共用) | 改一个,另一个会变 |
Copy |
复制数据 | 创建新对象 | 改一个,另一个不变 |
5.最简单记忆口诀
=赋值:引用类型共用,值类型独立Copy复制:永远独立,互不影响
总结
-
=- 值类型:复制数据,独立
- 引用类型:复制地址,共用对象
-
Copy- 无论什么类型,都创建新数据,完全独立
四、Array.IndexOf() / LastIndexOf() 查找下标
1. 基础用法
cs
int[] nums3 = { 1, 2, 3, 4, 3 };
// 正向查找:返回第一个匹配元素下标
Console.WriteLine(Array.IndexOf(nums3, 3)); // 2
// 反向查找:返回最后一个匹配元素下标
Console.WriteLine(Array.LastIndexOf(nums3, 3)); // 4
2. 高级重载(限定查找起始位置)
语法:Array.IndexOf(数组, 目标值, 开始查找下标);
cs
// 从下标3开始往后找3
Console.WriteLine(Array.IndexOf(nums3, 3, 3)); // 4
3. 终极重载(限定查找范围)
语法:Array.IndexOf(数组, 目标值, 开始下标, 查找长度);
cs
// 从下标3开始,往后查找2个元素范围
Console.WriteLine(Array.IndexOf(nums3, 3, 3, 2)); // 4
4. 查找规则
-
找到元素:返回对应索引下标
-
找不到元素:固定返回 -1
-
IndexOf:从左往右找第一个
-
LastIndexOf:从右往左找第一个
五、方法分类记忆
1. 非静态方法(数组对象调用)
Length、Rank、LongLength、ToString()
2. 静态方法(Array 类名调用)
Array.Clear()、Array.Copy()、Array.IndexOf()、Array.LastIndexOf()
六、最终总结(背诵版)
-
Clear:指定范围重置为默认值,不改变数组长度
-
Copy:数组拷贝,值类型互不影响,引用类型浅拷贝互相影响
-
IndexOf:正向查第一个下标,可限定起始位置和查找长度
-
LastIndexOf:反向查最后一个下标
-
查找失败统一返回 -1
-
string.Join() 可快速遍历拼接、打印数组全部元素