2026-05-06
C#
0

目录

📌 上节回顾
💡 核心知识讲解
控制台程序是什么?工厂里有啥用?
14 顶级语句 |
项目、命名空间、类——傻傻分不清?
.NET 10 控制台项目的文件结构
💻 VS2026 操作步骤
📋 完整代码示例
🏭 工业实战小案例
⚠️ 避坑提醒
这几个坑,我替你踩过了
📝 本节总结

有没有这种感觉:同事发来一段C#代码,说"你直接跑一下看看"。你打开VS2026,新建项目,结果面对着十几个模板愣住了——控制台?WPF?WinForms?类库?Worker Service?

选错了,代码粘进去直接报错。

选对了,却发现命名空间不对,还是跑不起来。

这不是你笨,是没人告诉你第一步该怎么走。今天这节课就专门解决这个问题:从零开始,创建你人生中第一个C#控制台项目,并且让它真正跑起来。


📌 上节回顾

「上一节我们学了 VS2026 内置的 Copilot 智能编程助手,掌握了用自然语言提问、让 AI 自动补全和生成代码的方法。今天在这个基础上,我们进一步学习如何从零创建一个完整的 C# 控制台项目,并写出第一段有工业语义的程序。」


💡 核心知识讲解

控制台程序是什么?工厂里有啥用?

控制台程序(Console Application),说白了就是一个只有黑色命令行窗口的程序。没有按钮,没有界面,输入文字、输出文字。

听起来很"老土",但在工厂场景里它的价值被严重低估。

你想想这些需求:定时采集设备数据写入数据库、批量处理生产报表、监听PLC报警信号然后发短信通知……这些任务根本不需要界面,控制台程序反而是最轻量、最稳定的选择

「控制台程序 = 工厂后台服务的最佳练手载体。」


C# 程序的"最小单元"长什么样?

C# 14 引入了**顶级语句(Top-level Statements)**特性。

什么意思?以前写C#,哪怕只打印一行字,也要先写类、写Main方法、写命名空间,一堆套娃。现在不用了,直接写业务逻辑,.NET 10会自动帮你套好外壳。

对比一下:

写法C# 9 之前C# 14 顶级语句
代码量约10行约1行
需要写Main方法
适合初学者一般非常适合
工程级项目适用同样适用

「顶级语句不是"偷懒",是C#语言进化的方向。」


项目、命名空间、类——傻傻分不清?

先用工厂类比帮你理解:

  • 解决方案(Solution):整个工厂园区
  • 项目(Project):园区里的一栋车间
  • 命名空间(Namespace):车间里的功能分区(焊接区、喷涂区)
  • 类(Class):某个工位上的操作规程
  • 方法(Method):规程里的具体步骤

你现在要做的,就是先建好一栋车间(项目),然后在里面写第一份操作规程(类+方法)。

下一节会专门讲解这个层级关系,今天先建起来、跑起来,概念自然就清晰了。


.NET 10 控制台项目的文件结构

新建项目后,VS2026会自动生成几个文件,初学者经常被这些文件搞懵:

文件名作用需要动它吗?
Program.cs程序入口,写业务逻辑的地方是,主战场
项目名.csproj项目配置文件,记录.NET版本等一般不用手动改
obj/ 文件夹编译中间文件不用管
bin/ 文件夹编译输出,生成的.exe在这里部署时用到

「今天你只需要关注一个文件:Program.cs。」


💻 VS2026 操作步骤

Step 1:打开 VS2026,进入新建项目向导

启动 VS2026,点击起始页的「创建新项目」按钮。 在搜索框输入"控制台",选择「控制台应用」(注意:选 C# 图标那个,不要选 VB.NET)。 点击「下一步」。

📎 Copilot 辅助:如果你不确定该选哪个模板,可以在 Copilot 对话框输入:「我想写一个采集设备数据的后台程序,应该用哪种C#项目模板?」Copilot 会直接告诉你选"控制台应用"并说明原因。

Step 2:配置项目名称和路径

  • 项目名称填写:IndustrialMonitor(工业监控,有语义)
  • 位置选择你自己的工作目录,例如:D:\proejct\11Test
  • 解决方案名称保持与项目名一致即可
  • 点击「下一步」

image.png

⚠️ 路径里不要有中文和空格,这是编程界的铁律。

Step 3:选择目标框架

在「框架」下拉框中选择 .NET 10.0。 确认勾选「不使用顶级语句取消勾选(即保持默认,使用顶级语句),不过作为老人我还是系统勾上这个。 点击「创建」。

image.png

📎 Copilot 辅助:创建完成后,VS2026 Copilot 会自动弹出"代码解释"浮层,解释 Program.cs 里每一行的含义。点击「解释此代码」即可查看。

Step 4:运行你的第一个程序

image.png

直接按键盘 F5,或点击顶部工具栏绿色「▶ 运行」按钮。 黑色控制台窗口弹出,显示 Hello, World!,说明环境配置完全正确。

📎 Vibe Coding Prompt 示例:在 Copilot 对话框输入「把 Hello World 改成输出当前时间和一条模拟设备报警信息」,Copilot 会直接生成修改后的代码,你只需粘贴替换。

image.png

image.png


📋 完整代码示例

这段代码实现了一个模拟工业设备状态监控的控制台输出程序,包含设备温度、产量计数和报警阈值判断。

csharp
// ===================================================== // 项目:IndustrialMonitor // 功能:模拟注塑机设备状态监控(控制台输出版) // 框架:.NET 10 | C# 14 | 顶级语句模式 // ===================================================== // 引入系统基础命名空间(.NET 10 默认已全局引入,此处显式写出便于理解) using System; // ---------- 设备基础参数定义 ---------- // 设备名称 string deviceName = "注塑机 #3号"; // 当前设备温度(摄氏度),模拟传感器读取值 double deviceTemp = 187.6; // 报警温度阈值,超过此值触发警告 double alarmThreshold = 200.0; // 当前班次累计产量(件) int productionCount = 1482; // 班次目标产量(件) int targetProduction = 1500; // ---------- 输出设备状态报告 ---------- Console.OutputEncoding=System.Text.Encoding.UTF8; // 设置控制台输出编码以支持特殊符号 Console.WriteLine("========================================"); Console.WriteLine($" 工业设备状态监控系统 v1.0"); Console.WriteLine($" 运行时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}"); Console.WriteLine("========================================"); Console.WriteLine($"\n【设备】{deviceName}"); Console.WriteLine($"【温度】{deviceTemp:F1} °C (报警阈值:{alarmThreshold:F1} °C)"); // ---------- 温度报警判断逻辑 ---------- // 判断当前温度是否超过报警阈值 if (deviceTemp >= alarmThreshold) { // 超温:输出红色警告(控制台颜色切换) Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("⚠️ [报警] 设备温度超标!请立即检查冷却系统!"); Console.ResetColor(); } else { // 正常:输出绿色状态 Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("✅ [正常] 温度在安全范围内"); Console.ResetColor(); } // ---------- 产量进度计算 ---------- // 计算当前产量完成百分比 double completionRate = (double)productionCount / targetProduction * 100; Console.WriteLine($"\n【产量】{productionCount} 件 / 目标 {targetProduction} 件"); Console.WriteLine($"【进度】{completionRate:F1}% {GetProgressBar(completionRate)}"); // ---------- 班次结论 ---------- // 判断是否完成目标 if (productionCount >= targetProduction) { Console.WriteLine("\n🎯 本班次目标已完成!"); } else { int remaining = targetProduction - productionCount; Console.WriteLine($"\n📋 距目标还差 {remaining} 件,加快节拍!"); } Console.WriteLine("\n========================================"); Console.WriteLine(" 按任意键退出监控..."); Console.ReadKey(); // ---------- 本地函数:生成文本进度条 ---------- // 根据完成百分比生成可视化进度条字符串 static string GetProgressBar(double percent) { // 进度条总格数 int totalBlocks = 20; // 计算已填充格数 int filledBlocks = (int)(percent / 100 * totalBlocks); // 构建进度条字符串 string filled = new string('█', filledBlocks); string empty = new string('░', totalBlocks - filledBlocks); return $"[{filled}{empty}]"; }

image.png

运行后,控制台会显示一份格式整齐的设备状态报告:设备名称、当前温度(绿色"正常"或红色"报警")、产量进度条,以及班次完成提示。把 deviceTemp 改成 205.0 再跑一次,你会看到红色报警信息弹出——这就是工业报警逻辑的最简雏形。


🏭 工业实战小案例

场景任务: 冲压车间需要一个小工具,在每次换班时快速打印当班的设备点检结果,包含3台冲压机的状态(正常/故障),输出到控制台供班长确认。

思路拆解: ① 定义3台设备的名称和状态数组。 ② 用循环遍历每台设备。 ③ 根据状态值判断输出"正常"还是"故障"。 ④ 故障设备用红色高亮显示。 ⑤ 最后统计故障台数并给出班长决策提示。

csharp
// 冲压车间换班点检报告生成器 // .NET 10 | C# 14 using System; // 设备名称列表 string[] pressNames = { "冲压机A1", "冲压机A2", "冲压机A3" }; // 设备状态:true = 正常,false = 故障 bool[] pressStatus = { true, false, true }; int faultCount = 0; Console.WriteLine($"===== 换班点检报告 [{DateTime.Now:HH:mm}] ====="); for (int i = 0; i < pressNames.Length; i++) { if (pressStatus[i]) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($" {pressNames[i]}:✅ 正常"); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($" {pressNames[i]}:❌ 故障 — 需维修后方可开机"); Console.ResetColor(); faultCount++; } } Console.WriteLine("====================================="); // 班长决策提示 if (faultCount == 0) Console.WriteLine(" 全部设备正常,可正常交班。"); else Console.WriteLine($" ⚠️ {faultCount} 台设备故障,请通知维修班组后再交班!"); Console.ReadKey();

image.png

运行后控制台输出三台设备的点检状态,A2故障行以红色高亮显示,并在底部给出班长交班建议——把这个工具交给班长,直接替代手写点检表。


⚠️ 避坑提醒

这几个坑,我替你踩过了

坑一:项目路径带中文,现在来说问题不大,不过尽量不要这样

❌ 错误做法:C:\用户\张工\我的项目\IndustrialMonitor ✅ 正确做法:D:\CSharpProjects\IndustrialMonitor 📌 原因:部分编译工具链对中文路径支持不完整,会出现莫名其妙的"找不到文件"错误,查半天查不出来。

坑二:Console.ReadKey() 漏写,窗口一闪而过

❌ 错误做法:程序最后一行直接结束,没有任何等待 ✅ 正确做法:末尾加上 Console.ReadKey(); 📌 原因:控制台程序运行完毕会立刻关闭窗口,你根本看不到输出结果。加上这一行,程序会等你按任意键才退出。

坑三:整数除法导致进度计算结果为0

❌ 错误做法:double rate = productionCount / targetProduction * 100; ✅ 正确做法:double rate = (double)productionCount / targetProduction * 100; 📌 原因:两个 int 相除在C#里是整数除法,1482/1500的结果直接变成0,强制转换其中一个为 double 才能得到小数结果。


📝 本节总结

「学完本节,你掌握了:」

用 VS2026 从零创建 .NET 10 控制台项目的完整流程,理解了 C# 14 顶级语句带来的简洁写法,学会了用 Console.WriteLine 输出设备状态信息,用 if 判断实现报警逻辑,用 for 循环遍历多台设备数据,还顺手用上了 Copilot 辅助生成代码的 Vibe Coding 工作方式。控制台程序看着简单,但它是你后续开发工业后台服务的基础骨架——地基打好了,后面盖多高都稳。


📖 本文是《C# 工业数字化应用开发专家》系列第 007 节

上一节:【VS2026 AI 内置功能:Copilot 智能编程助手入门】

下一节:【理解解决方案、项目、文件的层级关系】(明天更新)

💬 你在工厂里有没有想用程序替代的重复性工作? 欢迎在评论区说说你的场景,也许下一篇案例就来自你的留言。

🔔 还没关注的同学记得点击关注,系列课程持续更新,学完这420节,从工厂小白到工业软件开发专家,我们一起走。


#C#编程入门 #工业数字化 #VS2026 #工厂工程师 #.NET开发

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!