2026-05-06
C#
0

目录

📌 上节回顾
💡 核心知识讲解
变量是什么?用工厂的话说
四种类型,对应四类工厂数据
int:整数的世界,不接受小数
double:精度优先,处理所有小数数据
string:文字数据,用双引号括起来
bool:只有两个值,但用处极大
变量的声明方式:var 关键字
💻 VS2026 操作步骤
📋 完整代码示例
🏭 工业实战小案例
⚠️ 避坑提醒
这几个坑,我替你踩过了
📝 本节总结

你有没有遇到过这种情况:

PLC 采集回来的温度是 87.6,你存进变量里之后,界面上显示的却是 87

你反复检查通信代码,查了一个小时,最后发现——变量类型用错了,就这么简单。

这种低级错误,在工厂项目里出现的频率,远比你想象的高。

今天这节课,我们就把 C# 里最基础、也最容易踩坑的四个数据类型彻底搞清楚。


📌 上节回顾

「上一节我们学了解决方案、项目、文件的层级关系,掌握了在 VS2026 中组织代码结构的方法。今天在这个基础上,我们进一步学习变量与数据类型——这是你写出第一行"有意义的代码"的关键一步。」


💡 核心知识讲解

变量是什么?用工厂的话说

你可以把变量(程序里用来存数据的容器)理解成仓库里的料箱。

每个料箱有个标签(变量名),里面装着东西(数据)。

不同的料箱规格不一样,有的装整数,有的装小数,有的装文字。

「规格选错了,东西装不进去,或者装进去就变形了。」

这个"规格",就是数据类型


四种类型,对应四类工厂数据

先看一张对照表,建立整体感知:

数据类型存什么数据工厂典型用途
int整数产品计数、设备编号、工单号
double小数(高精度)温度、压力、电压、重量
string文字/字符串工单编号、操作员姓名、报警描述
bool真/假(开/关)设备运行状态、报警触发、门禁状态

四种类型,基本覆盖了工厂数据采集里 80% 以上的场景


int:整数的世界,不接受小数

int 是最常用的整数类型,范围是 -21亿 到 +21亿,日常工厂用途完全够用。

csharp
int productionCount = 1500; // 今日生产数量 int deviceId = 42; // 设备编号 int alarmCode = 3; // 报警代码

「记住:int 存的是整数,你给它赋值 87.6,它只会保留 87,小数点后面直接丢掉,不是四舍五入。」

这个特性,是温度显示出错的最常见原因。


double:精度优先,处理所有小数数据

工厂里的传感器数据,大多数是带小数的。

温度 87.6℃、电压 220.3V、重量 12.45kg——这些都该用 double

csharp
double deviceTemp = 87.6; // 设备温度(℃) double supplyVoltage = 220.3; // 供电电压(V) double productWeight = 12.45; // 产品重量(kg)

double 精度可以达到小数点后 15~16 位,传感器数据完全够用。

⚠️ 如果你做的是财务结算系统(比如计件工资),精度要求更高,应该用 decimal 而不是 double。但工业采集场景,double 就够了。


string:文字数据,用双引号括起来

工单号、操作员工号、设备名称、报警描述——这些都是文字,用 string 存。

csharp
string workOrderId = "WO-20260410-001"; // 工单编号 string operatorName = "张师傅"; // 操作员姓名 string alarmMessage = "1号炉温度超限"; // 报警描述文字

string 里的内容必须用英文双引号 "" 括起来,这是语法规定,少一个引号程序就报错。」

两个字符串拼接,用 + 号就行:

csharp
string logEntry = operatorName + " 处理了报警:" + alarmMessage; // 结果:张师傅 处理了报警:1号炉温度超限

bool:只有两个值,但用处极大

bool(布尔类型)只有 true(真)和 false(假)两个值。

听起来简单,但它是所有判断逻辑的基础

csharp
bool isDeviceRunning = true; // 设备是否运行中 bool isAlarmTriggered = false; // 报警是否触发 bool isDoorLocked = true; // 安全门是否锁闭

你后面写的所有 if 判断,底层都是在判断一个 booltrue 还是 false

「设备状态、报警开关、权限判断——凡是只有"是/否"两种状态的数据,首选 bool,别用 int 的 0 和 1 代替,那样代码可读性很差。」


变量的声明方式:var 关键字

C# 14 支持用 var 让编译器自动推断类型(类型推断:你不用写类型,编译器自己判断):

csharp
var productionCount = 1500; // 编译器自动识别为 int var deviceTemp = 87.6; // 编译器自动识别为 double var workOrderId = "WO-001"; // 编译器自动识别为 string var isAlarmTriggered = false; // 编译器自动识别为 bool

var 不是"不写类型",而是"让编译器帮你写"。类型在编译时就确定了,运行时不会变。

入门阶段建议先写明确类型,等熟悉了再用 var,这样更容易理解代码逻辑,这玩意我刚开始抵触的不行,这个看上去就是javascript的var,现在用着用着越来越习惯了。


💻 VS2026 操作步骤

Step 1:新建控制台项目

打开 VS2026,选择 文件 > 新建 > 项目,搜索"控制台应用",选择 C# 控制台应用(.NET 10),项目名填 DataTypeDemo,点击创建。

image.png

VS2026 Copilot 辅助:创建完成后,Copilot 会在右侧面板提示"检测到新项目,是否生成入门代码模板",点击"生成基础结构"可自动生成 Program.cs 框架。

Step 2:打开 Program.cs,清空默认内容

默认会有一行 Console.WriteLine("Hello, World!");,全选删除,准备手动输入代码。

VS2026 Copilot 辅助:在空白处输入注释 // 声明工厂数据变量,Copilot 会自动补全一组示例变量声明,按 Tab 键接受,再根据实际需求修改变量名和初始值。

Step 3:输入本节示例代码,运行查看输出

将下方完整代码粘贴进 Program.cs,按 F5 或点击顶部"运行"按钮启动调试。

输出结果会显示在底部"终端"窗口中。

VS2026 Copilot 辅助:如果你对某个变量的类型拿不准,把鼠标悬停在变量名上,Copilot 会弹出提示框,说明当前类型、取值范围和推荐替代类型。


🤖 Vibe Coding Prompt 示例

如果你想用自然语言让 Copilot 帮你生成代码,可以这样写 Prompt:

帮我声明一组用于注塑机监控的变量, 包含:模具温度(小数)、当前模次计数(整数)、 工单编号(文字)、设备是否在运行(布尔), 使用有工业语义的英文变量名,加上中文注释。

image.png

Copilot 会直接生成一段符合工业命名规范的变量声明代码,你只需要检查一遍、按需调整即可。


📋 完整代码示例

这段代码实现了:声明四种基本数据类型的工厂变量,并将它们格式化输出到控制台,模拟一条设备状态日志的打印效果。

csharp
// 整数类型:今日生产计数、设备编号 int productionCount = 1500; int deviceId = 7; // 浮点类型:设备温度、供电电压 double deviceTemp = 87.6; double supplyVoltage = 220.3; // 字符串类型:工单编号、操作员姓名 string workOrderId = "WO-20260410-007"; string operatorName = "李工"; // 布尔类型:设备运行状态、报警触发状态 bool isDeviceRunning = true; bool isAlarmTriggered = false; // 报警阈值(温度超过此值触发报警) double alarmThreshold = 90.0; // 设置控制台输出编码为 UTF-8,以支持中文字符显示 Console.OutputEncoding=System.Text.Encoding.UTF8; // ---- 输出设备状态日志 ---- Console.WriteLine("========== 设备状态日志 =========="); Console.WriteLine($"工单编号:{workOrderId}"); Console.WriteLine($"操作员 :{operatorName}"); Console.WriteLine($"设备编号:{deviceId} 号机"); Console.WriteLine($"运行状态:{(isDeviceRunning ? "运行中" : "已停机")}"); Console.WriteLine($"当前温度:{deviceTemp} ℃ (报警阈值:{alarmThreshold} ℃)"); Console.WriteLine($"供电电压:{supplyVoltage} V"); Console.WriteLine($"今日产量:{productionCount} 件"); // ---- 判断是否触发温度报警 ---- isAlarmTriggered = deviceTemp >= alarmThreshold; if (isAlarmTriggered) { Console.WriteLine("⚠️ 警告:温度超限,请立即检查设备!"); } else { Console.WriteLine("✅ 温度正常,设备运行良好。"); } // ---- 字符串拼接示例:生成一条日志记录 ---- string logEntry = $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] " + $"设备{deviceId}号 | 操作员:{operatorName} | " + $"温度:{deviceTemp}℃ | 产量:{productionCount}件"; Console.WriteLine("\n--- 完整日志记录 ---"); Console.WriteLine(logEntry);

image.png

运行后,你会在终端看到一份格式整齐的设备状态日志,温度低于 90℃ 时显示绿色"正常"提示,超过阈值则显示报警警告。日志最后一行还会打印出带时间戳的完整记录,这个格式和真实工厂 MES 系统的日志格式非常接近。


🏭 工业实战小案例

场景任务: 注塑车间 3 号机今日完成了 2300 模,模具温度当前读数为 92.4℃,报警上限设定为 90℃,需要判断是否触发超温报警,并打印一条带操作员信息的报警记录。

思路拆解: ① 用 int 存模次计数,用 double 存温度和阈值。 ② 用 bool 存报警状态,通过比较运算赋值。 ③ 用 string 拼接报警记录文字。 ④ 用 if 判断 bool 值,决定是否打印报警。

csharp
// 超温报警判断示例 int moldCycleCount = 2300; // 今日模次 double moldTemp = 92.4; // 当前模具温度(℃) double alarmThreshold = 90.0; // 超温报警阈值(℃) string machineId = "注塑机3号"; string operatorName = "王师傅"; bool isTempAlarm = false; // 判断是否超温 isTempAlarm = moldTemp > alarmThreshold; // 生成报警记录 if (isTempAlarm) { string alarmRecord = $"[超温报警] {machineId} | " + $"当前温度:{moldTemp}℃ 超过阈值 {alarmThreshold}℃ | " + $"操作员:{operatorName} | 今日模次:{moldCycleCount}"; Console.WriteLine(alarmRecord); } else { Console.WriteLine($"{machineId} 温度正常,当前 {moldTemp}℃。"); }

运行后终端直接输出一条带机器编号、温度数值、操作员姓名的超温报警记录——这就是工厂报警系统里最核心的数据结构雏形。


⚠️ 避坑提醒

这几个坑,我替你踩过了

坑一:用 int 存温度,小数悄悄丢了

❌ 错误做法:int deviceTemp = 87.6; ✅ 正确做法:double deviceTemp = 87.6; 📌 原因:int 直接截断小数部分,不报错但数据已经错了,查起来极难发现。


坑二:用数字 0/1 代替 bool,可读性极差

❌ 错误做法:int isRunning = 1; // 1代表运行,0代表停机 ✅ 正确做法:bool isRunning = true; 📌 原因:三个月后你自己都不记得 1 是啥意思,用 bool 代码一眼就懂。


坑三:字符串忘加引号,或者用了中文引号

❌ 错误做法:string workOrderId = WO-001;string name = "张师傅";(中文引号) ✅ 正确做法:string workOrderId = "WO-001";(英文双引号) 📌 原因:变量名不加引号编译器会把它当变量处理直接报错;中文引号是 VS 里最难肉眼发现的语法错误之一。


📝 本节总结

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

int 用来存整数型的工厂数据,比如产量和设备编号;double 负责处理所有带小数的传感器数值;string 装的是文字信息,从工单号到报警描述都靠它;bool 只有真假两个值,却是所有状态判断的基础。这四个类型,是你后续写任何工厂程序的数据地基。

地基打稳了,楼才能往上盖。下一节的常量和枚举,会让你的代码从"能跑"变成"好维护"。


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

上一节:【理解解决方案、项目、文件的层级关系】

下一节:【常量与枚举(const / enum)】

💬 你在工作中有没有遇到过数据类型选错导致的 Bug?

欢迎在评论区说说你的场景,也许下一篇案例就来自你的留言。

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


#C#编程入门 #工业数字化 #工厂工程师 #dotNET开发 #编程学习

本文作者:技术老小子

本文链接:

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