注塑车间,32台注塑机,每台机器有一个模温传感器。
领导说:"把所有机器的当前温度显示在监控界面上。"
你打开 VS,写下第一行:
csharpdouble temp1 = 0;
double temp2 = 0;
double temp3 = 0;
写到第5个,你停下来了——这要写到 temp32?
这不是编程,这是体力活。
数组,就是今天要帮你解决这个问题的工具。
「上一节我们学了跳转语句,掌握了用 break、continue、return、goto 控制程序执行流程的方法。今天在这个基础上,我们进一步学习如何用数组批量存储和处理工业数据。」
你去仓库领零件,仓管给了你一排有编号格子的零件盒。
格子1放螺丝,格子2放螺母,格子3放垫片……
这排格子,就是数组(Array)。
每个格子有固定位置(下标,从0开始),你随时可以按编号取出或放入数据。
一维数组,就是"一排格子"。
声明方式:
csharpdouble[] moldTemp = new double[32]; // 声明32个格子,存32台注塑机的模温
赋值和读取:
csharpmoldTemp[0] = 185.5; // 第1台机器温度(下标从0开始)
moldTemp[1] = 192.3; // 第2台机器温度
double t = moldTemp[0]; // 读取第1台机器温度
「记住:下标从0开始,不是从1。这是初学者最容易踩的第一个坑。」
也可以声明时直接初始化:
csharp// C# 14 新写法,更简洁
double[] alarmThreshold = [180.0, 190.0, 200.0, 210.0];
配合 for 循环,32台机器的温度一次性处理:
csharpfor (int i = 0; i < moldTemp.Length; i++)
{
Console.WriteLine($"第{i + 1}台注塑机温度:{moldTemp[i]}°C");
}
多维数组,就是"多排格子",像一张表格。
最常用的是二维数组(二维 = 行 × 列)。
工业场景举例: 一条生产线有8个工位,每个工位记录3个数据(温度、压力、转速)。
| 维度 | 含义 | 示例 |
|---|---|---|
| 第一维(行) | 工位编号 | 0~7,共8个工位 |
| 第二维(列) | 数据类型 | 0=温度,1=压力,2=转速 |
声明方式:
csharpdouble[,] stationData = new double[8, 3]; // 8行3列
赋值和读取:
csharpstationData[0, 0] = 75.5; // 第1工位,温度
stationData[0, 1] = 3.2; // 第1工位,压力(MPa)
stationData[0, 2] = 1450; // 第1工位,转速(rpm)
「多维数组适合数据本身有"行列结构"的场景,比如工位参数表、班次报表。」
交错数组(Jagged Array)是"数组的数组"。
工业场景举例: 3条产线,每条产线的设备数量不同(A线5台、B线3台、C线8台)。
用二维数组会浪费空间(要按最大数量8来分配),用交错数组刚刚好:
csharpdouble[][] lineTemp = new double[3][]; // 3条产线
lineTemp[0] = new double[5]; // A线5台设备
lineTemp[1] = new double[3]; // B线3台设备
lineTemp[2] = new double[8]; // C线8台设备
三种数组对比,一张表看清楚:
| 类型 | 结构 | 适用场景 |
|---|---|---|
| 一维数组 | 一排格子 | 单类数据批量存储 |
| 多维数组 | 固定行列表格 | 结构整齐的矩阵数据 |
| 交错数组 | 每行长度可不同 | 各组数量不一致的数据 |
Step 1 新建控制台项目
打开 VS2026,选择 文件 > 新建 > 项目,搜索"控制台应用",选择 .NET 10,项目名填 ArrayDemo,点击创建。
Step 2 输入代码并启用 Copilot 补全
在 Program.cs 中,输入 double[] moldTemp,Copilot 会自动联想出数组初始化和循环遍历的完整代码块。
按 Tab 接受建议,再根据实际需求修改变量名和长度。
建议:Copilot 生成的变量名有时是通用的(如
array1),记得手动改成有工业语义的名字(如moldTemp、lineSpeed)。
Step 3 运行与调试
按 F5 运行。如果出现"索引超出范围"报错(IndexOutOfRangeException),点击报错行,VS2026 会在行内直接显示当前下标值和数组长度,方便快速定位问题。
Step 4(Vibe Coding 提示词写法)
如果你想让 AI 直接帮你生成数组相关代码,可以这样写 Prompt:
"用 C# 14 声明一个长度为32的 double 数组,存储注塑机模温数据,用 for 循环遍历输出每台机器的温度,温度超过200度时打印报警信息。"
Copilot 会生成完整、可运行的代码,你只需要核对变量名是否符合项目规范。
这段代码实现了:用一维数组存储8台注塑机的模温数据,遍历输出温度,并对超温设备发出报警提示。
csharp// ============================================================
// 示例:注塑机模温数组管理
// 运行环境:VS2026 + .NET 10 + C# 14
// ============================================================
using System;
// 注塑机数量
const int MachineCount = 8;
// 报警温度阈值(单位:℃)
double alarmThreshold = 200.0;
// 声明并初始化模温数组(C# 14 集合字面量写法)
double[] moldTemp = [185.5, 192.3, 178.0, 205.6, 198.4, 201.1, 187.7, 193.0];
Console.WriteLine("========== 注塑机模温监控 ==========");
// 遍历所有机器温度
for (int i = 0; i < moldTemp.Length; i++)
{
// 机器编号从1开始,更符合现场习惯
int machineNo = i + 1;
double currentTemp = moldTemp[i];
// 判断是否超温
if (currentTemp >= alarmThreshold)
{
// 超温报警提示
Console.WriteLine($"⚠️ [报警] 第{machineNo:D2}号机 | 模温:{currentTemp:F1}°C | 已超过阈值 {alarmThreshold}°C!");
}
else
{
// 正常状态输出
Console.WriteLine($"✅ [正常] 第{machineNo:D2}号机 | 模温:{currentTemp:F1}°C");
}
}
Console.WriteLine("====================================");
// 统计超温机器数量
int alarmCount = 0;
foreach (double temp in moldTemp)
{
if (temp >= alarmThreshold)
alarmCount++;
}
Console.WriteLine($"当前共有 {alarmCount} 台机器超温,请立即检查!");

运行后,你会在控制台看到每台注塑机的温度状态,超温的机器会单独标出报警信息。第4台(205.6°C)和第6台(201.1°C)会触发报警,最后一行汇总显示"共2台机器超温"。这套逻辑,直接可以移植到你的上位机项目里。
场景任务: 某冲压车间有3条产线,各产线设备数分别为4台、6台、5台,需要记录每台设备今日的产量,并统计各产线总产量。
思路拆解:
csharp// ============================================================
// 冲压车间产线产量统计(交错数组示例)
// ============================================================
using System;
// 产线名称
string[] lineName = ["A线", "B线", "C线"];
// 交错数组:各产线设备今日产量(件)
int[][] productionCount = new int[3][];
productionCount[0] = [1200, 980, 1100, 1050]; // A线4台设备
productionCount[1] = [870, 920, 1010, 880, 950, 1000]; // B线6台设备
productionCount[2] = [1300, 1280, 1250, 1310, 1290]; // C线5台设备
Console.WriteLine("========== 冲压车间今日产量汇总 ==========");
// 遍历每条产线
for (int line = 0; line < productionCount.Length; line++)
{
int lineTotal = 0;
// 累加本产线所有设备产量
foreach (int count in productionCount[line])
{
lineTotal += count;
}
Console.WriteLine($"{lineName[line]}:共 {productionCount[line].Length} 台设备,今日总产量 {lineTotal} 件");
}

运行后,控制台输出每条产线的设备数量和今日总产量,数据清晰,一目了然——这就是交错数组在实际生产统计中的典型用法。
坑1:下标从0开始,别按习惯从1数
❌ 错误做法:moldTemp[32](数组长度32,最大下标是31)
✅ 正确做法:moldTemp[31]
📌 原因:C# 数组下标从0开始,访问 [32] 会直接抛出 IndexOutOfRangeException,程序崩溃。
坑2:多维数组和交错数组声明方式别搞混
❌ 错误做法:double[][] matrix = new double[3, 4];(语法错误,编译不过)
✅ 正确做法:多维用 double[,] matrix = new double[3, 4];,交错用 double[][] arr = new double[3][];
📌 原因:[,] 是多维数组,[][] 是交错数组,两者结构完全不同,不能混用。
坑3:数组长度声明后不能改
❌ 错误做法:moldTemp.Length = 64;(根本不能这样写)
✅ 正确做法:需要动态增减数量时,改用 List<double>(下一节就讲这个)
📌 原因:数组一旦创建,长度固定。强行修改只会让你在编译器面前碰壁。
「学完本节,你掌握了:」
一维数组的声明、初始化和遍历,能用它批量管理同类型的设备数据。多维数组的行列结构,适合存储有规律的矩阵型工业参数。交错数组的灵活特性,解决了各组数据量不一致的存储难题。你还学会了用 C# 14 的集合字面量写法让代码更简洁,以及三种最高频的初学者踩坑点。
数组是集合类的基础,掌握了它,下一节的 List<T> 学起来会顺很多。
📖 本文是《C# 工业数字化应用开发专家》系列第 018 节
上一节:【跳转语句:break、continue、return、goto】
下一节:【List<T> 泛型集合入门】
💬 你在工作中遇到过类似的需求吗?
是记录多台设备的温度、压力,还是统计各产线的产量?欢迎在评论区说说你的场景,也许下一篇案例就来自你的留言。
🔔 还没关注的同学记得点击关注,系列课程持续更新,学完这420节,从工厂小白到工业软件开发专家,我们一起走。
#C#编程 #工业数字化 #上位机开发 #工厂工程师 #编程入门
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!