ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

C#入门第一天:从变量类型到控制台程序,建立上位机开发地基

2026/10/4 16:46:51 拓冰建站 浏览量
C#入门第一天:从变量类型到控制台程序,建立上位机开发地基 1. 第429天我终于在CSDN上点开了C#的第一课先交代一下背景。加入CSDN第429天这个数字我记得很清楚因为我一直用它当书签。前428天我在CSDN上干什么说实话大部分时间是搜问题、看帖子、收藏代码、然后继续收藏。我一度觉得自己和程序员之间只差一个关注了一堆技术大佬的距离。直到今天我决定不再当旁观者认认真真学一门程序设计语言选的就是C#。为什么是C#不是因为网上说它简单也不是因为有人推荐而是我在CSDN的热搜词里翻来翻去发现C#的搜索结果非常接地气C#上位机、C#读扭矩值、C# Modbus TCP客户端、C# RFID考勤系统、C# 金蝶云客户端、C# SQLBulkCopy批量入库……这些全是实际工程里会碰到的需求而不是停留在教科书例题层面的学生管理系统。换句话说C#背后有一套真实的生产力场景在支撑学完能直接用这对自学者来说太重要了。所以今天这篇文章不是教程是我第一天学习的完整记录装了哪些东西、写了哪些代码、踩了哪些坑、以及为什么一个新人第一天就能理解C#的核心设计逻辑。如果你也是那种收藏了300篇入门文章但还没写过一行代码的人这篇你应该能对得上电波。2. 装环境这一步值得多说两句Visual Studio 2022 与 .NET SDK的取舍2.1 我为什么选了Visual Studio社区版第一次学C#最稳妥的起步就是Visual Studio Community 2022免费、功能全、安装包自带.NET编译运行环境不需要额外折腾。我见过不少新手一上来就追求轻量去装VS Code结果配置C#插件、配.NET SDK、配调试环境一晚上过去了还没写出一行能跑的代码。作为第一天学习目标应该是快速见到输出而不是把工具链打磨成艺术品。安装Visual Studio时有个细节值得注意在工作负载页面一定要勾选.NET 桌面开发否则你装的版本可能连控制台应用模板都找不到。如果你以后想写带窗口的上位机程序这个工作负载就是WinForms和WPF的根基。第一天装好后面能省掉一半的配置焦虑。2.2 .NET SDK到底是什么别被版本号吓住安装过程中你会见到.NET 6、.NET 7、.NET 8这些版本号。简单理解.NET就是C#代码的运行平台它负责把你的源代码翻译成计算机能执行的东西。现在的版本策略是每年出一个新大版本偶数版本是长期支持版LTS比如.NET 6和.NET 8都用起来很稳。我的建议第一天直接装Visual Studio自带的最新稳定版SDK不用刻意追求版本。因为学习阶段的代码无论你写Console.WriteLine还是写循环判断在哪个版本上跑起来都一样。等以后接触工业项目、管线升级的时候再去研究目标环境的运行时版本也不迟。提示新手最常犯的错是版本恐惧症——一看到.NET 8、.NET Core 3.1、Framework 4.8这些名词就想搞懂全部区别。第一天真没必要你只需要知道Visual Studio默认帮你配好一切点运行能出结果就够了。3. 第一天就从Hello World前进到计算器变量、类型与程序逻辑3.1 第一个程序不是单纯打印而是理解入口很多入门教程让新人写一个Console.WriteLine(Hello World)就结束了。我第一天没有止步于此而是逼自己搞清楚三件事Main方法是什么、程序从哪里开始执行、为什么代码里的console的大小写不能错。用Visual Studio新建控制台应用后默认会生成大概这样的代码Console.WriteLine(Hello, CSDN!);按F5运行黑窗口里出现这行字。但如果你只是看到字就关掉那等于白写。你应该注意Main方法是程序入口——所有代码本质上都是从Main开始往上往下走的。控制台程序像一场舞台剧Main是开幕写多少行代码舞台就演多久演完就谢幕关闭。这也是为什么很多人写完程序发现闪一下就没了——因为程序跑完就结束了。你要么加一句Console.ReadKey()让程序等一个按键要么用CtrlF5运行Visual Studio会让窗口停留。这个坑几乎每个第一天学C#的人都会遇到我记录在这里你就不用再踩了。3.2 变量和数据类型把内存格子这个概念焊死在脑子里第二天之后你要面对 class、对象、继承这些抽象概念但如果第一天就把变量搞明白后面会顺很多。我的理解方式是变量就是你在内存里租的格子格子分不同类型决定你能往里面放什么形状的东西。C#常见数据类型我做了个表格方便自己复盘类型关键字能存什么示例整数int整数如42int age 29;长整数long很大的整数long big 3000000000;浮点数double小数如3.14double pi 3.14;单精度float小数但精度低float f 1.5f;字符char单个字符char c A;字符串string一串字符string name CSDN;布尔booltrue/falsebool ok true;这里有个常见误会很多人觉得float和double只是精度不同用哪个都行。实际使用中涉及金额、测量值、传感器数据等需要精确计算的场景优先用double大内存数组里存大量小数时才考虑float。CSDN热搜里不是有个C#读Power Focus 6000扭矩值吗那种工业设备读回来的数值就是典型的需要double处理的场景——扭矩值带着小数位用int一接精度直接全丢。3.3 写一个能算成绩等级的计算器if、循环与Convert的第一次组合第一天学完基本输入输出后我给自己布置了一个小任务写一个程序让用户输入一个0到100的整数然后输出对应的成绩等级。这个任务不大但能一次性把变量、类型转换、条件判断全练一遍。Console.WriteLine(请输入你的考试成绩0~100); string input Console.ReadLine(); // 读进来的是字符串 int score Convert.ToInt32(input); // 转成整数 if (score 90) { Console.WriteLine(优秀); } else if (score 80) { Console.WriteLine(良好); } else if (score 60) { Console.WriteLine(及格); } else { Console.WriteLine(不及格); } Console.ReadKey();注意Convert.ToInt32这一步。Console.ReadLine()返回的一定是字符串哪怕你输入的是95它也是字符串形式的95。计算机不会帮你自动把95变成数字95所以必须显式转换。这个字符串和数字不是一回事的意识是第一天最该建立的底层认知。后面学上位机、学串口通信时你会无数次面对读进来的是字节、是字符串要转成数值再计算的场景——C#读扭矩值、读温湿度传感器数据全都绕不开这个转换逻辑。写完这个小计算器我又顺手练了一个for循环从1加到100输出总和。int sum 0; for (int i 1; i 100; i) { sum i; } Console.WriteLine(1加到100等于 sum);这个写法第一次见时有点懵后来理解了sum i就是sum sum i的简写把右边的计算结果重新存回sum这个格子里。循环本身不难难的是理解循环变量i在每一轮执行时会发生什么变化。第一天的我并不追求把所有细节都背下来只要能看懂执行顺序、能自己改循环条件做出不同结果就已经达标了。4. 第一天最容易卡住的地方我把新手报错全部归类了一遍4.1 报错不可怕可怕的是看不懂报错在说什么Visual Studio的报错信息是全英文的第一天看到红波浪线的那一刻我脑子里闪过的第一个念头是完了我是不是不适合学编程。后来冷静下来把今天遇到的错误整理了一遍发现新手报错就那么几类。错误信息长这样真实原因解决办法当前上下文中不存在名称score变量声明在某个花括号{}内部外面访问不到把变量声明移到花括号外无法将string类型隐式转换为int直接用字符串赋值给int变量用Convert.ToInt32或int.Parse转换应为;上一行末尾忘了分号C#每条语句以分号结尾缺少using指令或程序集引用用了某个类但没引入对应命名空间按Ctrl.查看提示并添加using类型Console不包含WriteLine的定义把Console拼错或大小写不对确认首字母C大写其实第一天我也没把表格里的错误全遇一遍但我知道这些迟早会遇到。学编程有一个很重要的心态转变从报错失败变成报错程序在告诉我哪里不对。编译器是最诚实的老师它不会因为你写错代码就嘲笑你它只会一五一十地告诉你哪一行、哪个位置、出了什么问题。4.2 字符串拼接用还是$我推荐直接学插值我在代码里写过1加到100等于 sum这种写法。第一天用拼接没问题但我翻了几个CSDN高赞帖后发现现在的主流写法是字符串插值Console.WriteLine($1加到100等于{sum});花括号里可以直接放变量名运行时会自动替换成变量的值。这个写法更直观、不容易漏掉空格而且在后面学日志输出、拼接复杂SQL语句时都更实用。我这篇文章里的代码示例统一用插值写法建议你从一开始就养成这个习惯。4.3 中文字符集乱码问题一个你迟早要遇见的经典坑第一天我还踩了一个很典型的坑在控制台里输出中文时有些中文字符显示成乱码。这个问题在Windows控制台尤其常见根源是控制台的代码页和C#文件默认编码不一致。我用的解法很简单在代码开头加上Console.OutputEncoding System.Text.Encoding.UTF8;这一行强制控制台用UTF-8输出。如果你学的是上位机开发将来和PLC设备通信时读回来的中文注释、设备返回的文本信息同样会遭遇编码问题——C#里Encoding这个类就是专门解决这类问题的第一天提前接触一下不亏。5. 我在CSDN热搜里看到的C#真实世界一份从入门到上位机的成长地图5.1 热度词背后藏着的就业场景学完基础知识我忍不住去翻了翻CSDN的搜索热词想看看C#的生态到底长什么样。结果很有意思c#上位机、c#读power focus 6000扭矩值、c# modbus tcp 客户端、c# opencvsharp ordercorners、c# 金蝶云 客户端、c# 综合教务管理系统……这些词条说明什么说明C#的从业者大量集中在工业自动化、设备通信、桌面管理软件、ERP/教务系统这些领域。这和网上学Java进大厂的主流叙事完全不一样。C#的生态核心是连接现实世界读一台扭矩仪的数据、给PLC写一个通信客户端、给工厂做一套RFID考勤系统。它不是最性感的语言但它在真实的物理世界中扎得极深。如果你学C#的目标是走工业上位机方向那第一天学的变量、类型、判断、循环就是未来所有通信逻辑的地基。5.2 第一天不需要学什么给紧绷的新手松绑看了一圈热词之后反而让我踏实了。因为那些词条背后的技术——Modbus协议、图像识别、数据库批量写入、防反编译——没有一个是第一天需要碰的。第一天真正的任务就是把语法基础磨扎实变量、类型、运算符、分支、循环外加一个遇到问题能自己搜的习惯。我给自己列了一个禁学清单暂时不碰WinForms/WPF界面设计先写控制台暂时不学类与对象的高级特性知道Main是入口就行暂时不碰数据库和文件读写暂时不纠结public、private这些修饰符的含义把这些东西从脑子里挪走之后学习压力小了一大半。你只需要把有限的心智放在一个知识点上让它真正透而不是囫囵吞枣地全浏览一遍。5.3 从复制代码到打错代码我的输入法肌肉记忆第一天我还刻意做了一件反人性的事只手敲代码不复制粘贴。我把教程里的代码自己敲了一遍故意敲错几个地方看看编译器怎么提示。敲错没什么丢脸的连打了几年代码的人也会把Console打成Conosle。但这恰恰是学习的一部分你的手指在建立肌肉记忆你的眼睛在熟悉字母和符号的排列。特别是花括号{}、分号;、引号它们在中文输入法下经常变成全角字符一旦混进去编译立刻报错。这个体验必须亲自经历过一次你才会在以后每次写代码前检查输入法状态。6. 复盘第429天的心态变化和明天的学习计划从加入CSDN第429天这句话本身能看出我是一个拖了太久的观望者。但今天真正坐下来学C#之后我发现第一天的意义不只是学会了几个语法而是完成了两个转变第一个转变是从收藏者变成执行者。以前看到好贴子先收藏收藏完就以为自己会了。今天写代码时才发现收藏不等于理解理解不等于能写出来。只有当你亲自面对编译器的报错、亲自调整循环条件、亲自把字符串转成整数时知识才真正变成了你的。第二个转变是接受了新手身份。以前看CSDN大佬的文章总觉得自己差太远不好意思动手。今天我发现再厉害的上位机工程师也是从Console.WriteLine(Hello World)开始的。唯一的分水岭是他在第2天还在写我在第429天才开始写。明天我的安排很简单继续用控制台程序练习把今天学过的数据类型再过一遍然后尝试写一个猜数字的小游戏——程序随机生成一个1到100的数用户输入猜测程序提示大了还是小了循环直到猜中。这个任务能综合练习循环、判断、随机数和类型转换比单纯看教程高效得多。如果你也刚起步不妨和我一起完成这个练习。最后说一句实话第一天学C#不需要买一堆书不需要关注几十个公众号不需要做详细到天的学习计划。装好Visual Studio写完上面的代码你今天的任务就算完成了。剩下的都交给明天的自己。