C#数组的属性和方法(Clear / Copy / IndexOf )

一、数组基础属性回顾

所有数组自带三个核心属性:

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 复制:永远独立,互不影响

总结

  1. =

    • 值类型:复制数据,独立
    • 引用类型:复制地址,共用对象
  2. 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()


六、最终总结(背诵版)

  1. Clear:指定范围重置为默认值,不改变数组长度

  2. Copy:数组拷贝,值类型互不影响,引用类型浅拷贝互相影响

  3. IndexOf:正向查第一个下标,可限定起始位置和查找长度

  4. LastIndexOf:反向查最后一个下标

  5. 查找失败统一返回 -1

  6. string.Join() 可快速遍历拼接、打印数组全部元素

相关推荐
i7i8i9com1 小时前
Hermes Agent 安装记录
开发语言·bash·hermes
Brave & Real1 小时前
小程序 const 在js中以及与同类的var和let之间的差异
javascript·微信小程序·小程序
小娄~~2 小时前
C语言卷子错题集
c语言·开发语言·数据结构
米丘2 小时前
React 19.x 的 lazy 与 Suspense
前端·javascript·react.js
一然明月3 小时前
qt基本用法
开发语言·qt
hef2883 小时前
Prism图形设计从入门到精通:外观设置、图层顺序与微调技巧
开发语言
ZC跨境爬虫3 小时前
跟着 MDN 学CSS day_21:(图像溢出控制与表单元素样式定制)
前端·javascript·css·ui·交互
z落落3 小时前
C# 数组 最终完整版全套笔记(一维+多维+交错+引用类型+对象数组)
java·笔记·c#
长谷深风1113 小时前
Java 面试高频:反射机制与异常体系全面解析
java·开发语言·面试·exception·java 反射·java 异常·class 对象