C#入门系列【数组】:代码世界的 “超级收纳盒”
想象一下,你有 100 颗糖果,随手丢在桌上,找特定口味的糖果得翻个底朝天。但要是有个超大号分格收纳盒,把草莓味、巧克力味、柠檬味的糖果都分类装好,找起来是不是超方便?在 C# 的代码世界里,数组就是这个 “超级收纳盒”,它能帮我们把一堆数据有条理地管起来。今天,咱们就来扒一扒数组的 “前世今生”!
一、数组初登场:从 “散装数据” 到 “精装套餐”
先看个 “散装数据” 的例子。假设你要记录 5 个同学的考试成绩,如果不用数组,可能会这么写:
int score1 = 85;
int score2 = 90;
int score3 = 78;
int score4 = 95;
int score5 = 88;
要是有 100 个同学的成绩,难道要写 100 行代码?这不得累到 “吐血”!而且,想统计这些成绩的总和,代码会变得又长又乱。
这时候,数组闪亮登场!用数组来存储这 5 个成绩,瞬间清爽:
int[] scores = { 85, 90, 78, 95, 88 };
int[]
表示这是一个存储整数的数组,scores
是数组的名字,大括号里就是具体的成绩数据。就像给这 5 个成绩套上了一个 “收纳盒”,想找哪个成绩、想对它们做什么操作,都方便多了!
二、数组的基本语法:打造专属 “收纳盒”
创建数组有两种常见方式,就像组装收纳盒有不同的 “说明书”:
1. 初始化赋值法
// 存储字符串的数组,记录一周的星期名称
string[] weekdays = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
// 存储布尔值的数组,记录是否完成作业(true表示完成,false表示未完成)
bool[] isHomeworkDone = { true, false, true, true, false };
这种方式适合一开始就知道数组里具体数据的情况,直接把数据塞进去,“收纳盒” 就组装好了。
2. 指定长度法
// 创建一个能容纳10个整数的数组,初始值都是0
int[] numbers = new int[10];
// 创建一个能容纳5个字符串的数组,初始值都是null
string[] names = new string[5];
这里new
关键字就像 “开工指令”,告诉 C# 要打造一个指定大小的 “收纳盒”。虽然一开始里面的数据是默认值(数值类型默认是 0,引用类型默认是null
),但后续可以随时往里面 “放东西”。
三、数组的 “打开方式”:精准定位 “收纳物品”
数组里的每个数据都有一个专属 “座位号”,这个 “座位号” 叫索引。在 C# 中,索引从 0 开始计数。比如前面的scores
数组:
int[] scores = { 85, 90, 78, 95, 88 };
// 取出第一个同学的成绩(索引为0)
int firstScore = scores[0];
Console.WriteLine($"第一个同学的成绩是:{firstScore}");
// 修改第三个同学的成绩(索引为2)
scores[2] = 80;
Console.WriteLine($"修改后的成绩数组:{string.Join(", ", scores)}");
通过数组名[索引]
的方式,就能精准 “抓取” 或修改数组里的数据,就像拿着 “座位表” 在电影院找座位一样简单。
四、数组的 “花式操作”:解锁更多收纳技巧
1. 遍历数组:挨个 “检查收纳盒”
如果想把数组里的数据全部打印出来,或者做一些批量处理,就需要遍历数组。最常用的两种方式是for
循环和foreach
循环:
int[] numbers = { 1, 2, 3, 4, 5 };
// 使用for循环遍历
Console.WriteLine("使用for循环遍历数组:");
for (int i = 0; i < numbers.Length; i++)
{
Console.Write(numbers[i] + " ");
}
Console.WriteLine();
// 使用foreach循环遍历
Console.WriteLine("使用foreach循环遍历数组:");
foreach (int num in numbers)
{
Console.Write(num + " ");
}
for
循环像个 “勤劳的小蜜蜂”,按照索引顺序挨个访问数组元素;foreach
循环则更 “人性化”,直接把数组里的每个元素 “拎出来” 处理,不用操心索引的问题。
2. 多维数组:打造 “多层收纳柜”
前面说的都是一维数组,就像单层的收纳盒。如果数据需要按 “行” 和 “列” 排列,就可以用多维数组,比如二维数组:
// 创建一个3行4列的二维数组,存储学生的各科成绩
int[,] studentScores = {
{ 85, 90, 78, 82 },
{ 92, 88, 95, 87 },
{ 76, 80, 84, 91 }
};
// 取出第二行第三列的成绩(注意索引从0开始,所以是[1, 2])
int specificScore = studentScores[1, 2];
Console.WriteLine($"第二行第三列的成绩是:{specificScore}");
二维数组就像一个 “多层抽屉收纳柜”,每个数据都有 “楼层号” 和 “抽屉号”(两个索引),定位起来也很方便。当然,C# 还支持三维甚至更多维的数组,不过用得相对少一些。
3. 数组的常用方法:收纳盒的 “隐藏功能”
C# 提供了很多实用的数组方法,比如:
Array.Sort()
:给数组里的数据 “排队”,就像把收纳盒里的物品按大小、字母顺序整理好。
int[] numbers = { 5, 3, 1, 4, 2 };
Array.Sort(numbers);
Console.WriteLine($"排序后的数组:{string.Join(", ", numbers)}");
Array.Reverse()
:把数组里的数据顺序 “倒过来”,像把收纳盒里的物品从尾到头重新排列。
int[] numbers = { 1, 2, 3, 4, 5 };
Array.Reverse(numbers);
Console.WriteLine($"反转后的数组:{string.Join(", ", numbers)}");
五、使用数组的 “避坑指南”:别让收纳变 “灾难现场”
-
- 索引越界警告:千万别忘了数组索引从 0 开始!如果访问
scores[5]
(假设scores
数组只有 5 个元素),程序会直接 “罢工”,抛出IndexOutOfRangeException
异常,就像你非要打开不存在的抽屉,肯定会出问题。
- 索引越界警告:千万别忘了数组索引从 0 开始!如果访问
-
- 类型必须一致:数组这个 “收纳盒” 很 “挑剔”,只能装同一类型的数据。别想着把整数和字符串强行塞到同一个数组里,否则编译都过不了,就像硬把袜子和勺子放在同一个抽屉,怎么看都不对劲!
-
- 多维数组的 “尺寸” 陷阱:使用多维数组时,一定要注意行和列的数量。比如在遍历二维数组时,循环条件写错,就可能访问到不存在的位置,引发奇怪的错误。
六、总结:数组在手,数据管理无忧!
数组就像 C# 代码世界里的 “万能收纳神器”,有了它,不管是几百个数据还是复杂的多维数据,都能被安排得明明白白。下次遇到需要管理一堆同类数据的场景,记得果断掏出数组这个 “法宝”!快去用数组优化你的代码,让它们变得更整洁、更高效吧!如果在使用数组的过程中遇到了有趣的问题,或者发现了更酷的用法,欢迎随时来和我分享哦!