一、数组核心概念数组是存储相同类型数据的容器所有数组都基于 Array 类实现。数组核心特性长度固定数组创建后大小无法修改有序存储元素按照存入顺序排列索引下标操作所有元素通过索引读写索引规则索引从 0 开始长度从 1 开始最大索引 数组长度 - 1二、数组定义与各类数组默认值定义语法数据类型[] 数组名;命名规范数组变量名一般加 s 后缀names、ages、sexsint[] ages; // 整型数组默认值0 bool[] sexs; // 布尔数组默认值false string[] names; // 字符串数组默认值null char[] chars; // 字符数组默认值\0空字符三、数组四种赋值/初始化方式// 方式1指定长度创建空数组 int ages new int[10]; // 方式2指定长度 初始化所有元素 string names new string[5] { 张三, 张三, 张三, 张三, 张三 }; // 方式3不指定长度长度由元素个数自动确定 int ages new int[] { 1, 2, 3 }; // 方式4字面量简写最常用 int[] nums { 1, 2, 3 };四、数组基础增删改查操作1. 创建固定长度数组// 创建长度为100的空字符串数组 string[] msgs new string[100];2. 单个元素赋值通过下标msgs[0] 张三; msgs[1] 搜索; // 报错索引超出数组界限 // msgs[100] ss;易错点数组长度100合法索引范围为 0~99超出范围直接报错3. 循环批量赋值借助数组名.Length获取数组总长度实现全自动批量赋值for (int i 0; i msgs.Length; i) { msgs[i] i 深度; }4. 单个元素取值// 取出最后一个元素 Console.WriteLine(msgs[99]);五、数组两种遍历方式重点1. for 循环遍历优势可以获取元素索引下标支持修改数组元素for (int i 0; i msgs.Length; i) { Console.WriteLine(msgs[i] --------); }2. foreach 循环遍历语法foreach(元素类型 变量名 in 数组)item 等价于数组中当前遍历到的msgs[i]foreach (string item in msgs) { Console.WriteLine(item ); }3. for 与 foreach 核心区别必背foreach写法简单仅用于读取数据缺点无法获取元素索引、无法修改元素位置for写法稍繁琐可以获取索引支持修改数组元素功能更全面六、object 万能数组存储不同类型数据普通数组只能存储单一类型数据object 是所有数据类型的父类可存储任意类型数据int、string、bool 等。拓展实际开发中存储多类型数据优先使用 ArrayList、List 集合不推荐频繁使用 object 数组。// 存储int、string、bool多种类型 object[] arr new object[5] { 1, 2, 3, 张三, true }; // 遍历万能数组 foreach (object item in arr) { Console.WriteLine(item); } // 直接打印数组名输出System.Object[] Console.WriteLine(arr);注意object 类型数据无法直接运算需要强制类型转换后才能操作七、数组核心易错点总结数组长度固定初始化后不能扩容、缩容索引从 0 开始最大索引 数组长度 - 1超出范围报索引越界错误值类型数组默认值为0/false引用类型数组默认值为nullforeach 仅可读不可改需要操作下标必须用 for 循环直接打印数组变量名只会输出数组类型名称不会输出元素内容八、数组标准模板// 1. 定义并初始化数组 int[] nums new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 2. 赋值 nums[3] 10; // 3. for遍历 for (int i 0; i nums.Length; i) { Console.WriteLine(nums[i]); } // 4. foreach遍历 foreach (int item in nums) { Console.WriteLine(item); }九、拓展实战随机昵称生成器一维数组随机取值// 姓氏库、名字库 string[] xings { 赵, 钱, 孙, 李, 诸葛, 夏侯, 东方, 欧阳 }; string[] names1 { 亮, 娜娜, 月初, 惇, 匡胤, 多多, 权, 世民 }; Random rnd new Random(); // 随机下标范围 0 ~ 数组长度-1 int index rnd.Next(0, xings.Length); int index1 rnd.Next(0, names1.Length); // 拼接随机昵称 Console.WriteLine(xings[index] names1[index1]);