
我最近在带几个刚转行做.NET的朋友发现一个特别普遍的现象他们不是不努力而是太努力了。一上来就打开官方文档从“程序集”看到“垃圾回收”从LINQ拖到async/await浏览器开了二十个标签页越看越慌最后怀疑自己是不是不适合写代码。其实C#这个语言你要真想用它做点东西出来入门阶段根本不需要掌握那么多。我跟你说句实在话把下面这7个概念吃透了你已经能写出不少有用的程序了。别的都是后话。1. 变量别把它想得多高级就是个装东西的盒子变量这词儿听起来唬人说白了就是你给内存里的一个存储位置起了个名字。你得告诉C#里面装的是什么类型的东西是数字、文字还是真假值。stringname张三;// 字符串类型用来存文字intage18;// 整数类型用来存年龄、数量这种整数doubleprice12.99;// 小数类型带小数点的数boolisDevelopertrue;// 布尔类型只有true和false两种这里有个小坑我必须给你指出来很多人喜欢一句代码同时声明好几个变量省行数但别省清晰度。别图一时爽整一堆string a, b, c;过两天你自己都记不住哪个是干什么的。变量名起得短不是本事起得准才是。另外说句题外话C#现在有var这个关键字可以让你少敲几个字母。但我建议新手阶段老老实实把类型写出来。为什么因为你要去感受“类型”这个东西它是C#的骨架你躲不掉的。2. 方法把重复的代码打包随用随取写程序免不了反复干同一件事比如跟用户打招呼。你总不能每次都把好几行代码复制粘贴一遍吧复制粘贴一时爽改起需求火葬场——到时候你光找哪儿没改就够喝一壶的。方法就是把这堆重复的逻辑装进一个带名字的“盒子”里想用就调用一次。voidSayHello(){Console.WriteLine(你好欢迎使用本系统);}SayHello();// 这一行就相当于执行了里面的代码看到没方法体里写什么逻辑你自己定用的时候就喊它一声。等你后面学方法参数、返回值你会发现这就是你自己定义的“工具”——像电钻你拧螺丝前先把钻头装好然后按个开关就行。我见过不少新人纠结“什么时候该拆方法”。我给你个土办法当你发现自己第三次复制粘贴同一段代码时就该把它抽出来当方法了。这是最朴素的感受阀值。3. 类与对象图纸和盖出来的楼面向对象这词儿被各种二手教程玩坏了好像不扯几句多态、继承就不配讲。但说真的一开始你只需要理解两个角色就够类就是图纸对象就是按图纸盖出来的那一栋楼。// 图纸People规定一栋“人物”楼要有名字和年龄两个属性classPerson{publicstringName{get;set;}publicintAge{get;set;}}// 按图纸盖第一栋楼命名为张三PersonpersonnewPerson();person.Name张三;person.Age18;图纸能画很多张每张都能盖出无限多栋楼。刘备、关羽、张飞都是按Person这张图纸盖出来的对象但各自的名字和年龄互不影响。这个感觉你抓住了后面什么继承、接口都不难理解——无非是图纸之间怎么参考复制。顺带提醒一个容易踩的坑C#里属性用{ get; set; }缩写是C# 3.0以后的标准写法可自动读写。但新手千万别为了显示自己“懂内部原理”去手写一堆 full property除非你确实有逻辑要加否则白白增加阅读负担。4. 条件判断让程序自己拿主意程序再牛它也得做选择。你是成年人还是未成年人登录没登录余额够不够——全是二选一的分岔路口。intage17;if(age18){Console.WriteLine(你可以进网吧了。);}else{Console.WriteLine(未成年人回家写作业。);}就这么简单。if后面括号里放条件成立走第一花括号不成立走else。还有else if可以接多个路口就跟游戏里多分支对话一样玩家选哪个走哪条分支。来个真话条件判断这块最难的从来不是语法而是你容易把它嵌套得太深。三四个if叠在一起缩进看着像金字塔你自己读都会想吐。记住一个原则超过两层嵌套就试试提前return或拆成方法。代码的“脏乱差”就是这么防出来的。5. 循环让电脑替你干重复的活儿电脑最擅长的就是重复劳动人最烦的就是重复劳动。循环就是把这“一个愿打一个愿挨”结合起来的桥梁。// 打印出0到4这5个数字for(inti0;i5;i){Console.WriteLine(i);}for循环的三个表达式你得会读第一个是起点第二个是条件第三个是每轮干的事儿这里i就是 i 加1。还有一种更常用的foreach专门用来遍历集合里的每个元素。ListstringlanguagesnewListstring(){C#,Python,JavaScript};foreach(stringlanginlanguages){Console.WriteLine(lang);}这段代码的意思就是“把languages里的每一项取出来依次叫它lang然后打印出来。”foreach这条语法糖包着底层一堆麻烦但你别管先会用再说。这儿有个常见坑for循环里修改计数器i的值比如循环体里来个i i 2螺旋升天。别这么玩要调试的时候你会疯的。6. List一个会自己变大的数组C#里的数组是定长死的你声明了能存5个就存不了第6个。但现实世界里你要存的东西数量可变——用户列表、购物车、生鲜订单谁猜得到有多少个这时候就用ListT它是集合家族里面最亲民的成员。// 创建一个存放字符串的列表并初始化三个语言ListstringlanguagesnewListstring(){C#,Python,JavaScript};// 随时往里加languages.Add(Go);// 随时看有多少个Console.WriteLine(languages.Count);注意ListT的尖括号那不是小于号大于号这是泛型的入门长相。尖括号里写什么列表就能装什么类型。你就当它是一个“能说明书上写着装什么的智能书架”。等你后面学队列、字典这些会发现全家桶里的套路都一样左边装类型右边存数据上手特别快。7. 异常处理程序也有翻车的时候你得给它系上安全绳新手写代码的时候恨不得每行都成功但现实是让你转数字你传个“hello”让你读文件文件被占用。这些意外时刻如果不拦着程序直接就崩了用户看到的就是一个甩锅对话框。异常处理就是给代码系上安全绳try{intnumberint.Parse(hello);// 这句一定会炸Console.WriteLine(number);}catch(FormatException){Console.WriteLine(你输入的不是一个合法的数字。);}try里面放“有风险的代码”一旦抛出FormatException这个特定类型的异常就会被catch接住然后执行你预设的安慰话术。这样一来程序不仅不崩还能优雅地告诉用户“你搞错了”。说句掏心窝的异常处理最怕新手把整个程序塞进一个巨型try然后catch (Exception)空着不做处理。那等于拿个铁桶把信号屏蔽了错误真发生时你连个头绪都没有。捕获具体异常给用户有意义的信息这是高素质程序员的标志。最后送你句话学C#真不用一口吃成胖子。变量、方法、类、条件、循环、List、异常这7个东西串起来你已经能写个命令行版的记账本、题库刷题器、成绩统计脚本了。先写起来遇到不会的再查查完接着写。写烂代码不可怕不写才可怕。代码这行最远的距离不是从入门到放弃是从看懂到写一遍。去写吧你敲下的每一行都在给未来的自己铺路。