简介这是一份面向C#零基础读者的入门电子书即《C#玩家指南》第三版围绕C#语言与Visual Studio 2017展开帮助初学者从语法概念逐步过渡到可实际动手的编程实践。全书按五部分组织先讲编程语言、环境安装与第一个程序再覆盖变量、类型系统、数学运算、用户输入、分支、循环、数组、枚举与方法等基础随后深入类与对象、继承、多态、泛型等面向对象核心并延伸到文件、异常、线程等高级主题最后落到.NET平台与开发工具的效率技巧。资源包为1个PDF文件大小9.27MB单文件即含完整目录与章节内容便于在电脑或平板上按章节检索阅读。已有131人学习适合希望系统打牢C#基础、边读边在Visual Studio中练习的入门者。1. 零基础先搞懂C# 到底是一门什么语言很多人第一次看到 C# 这个名字第一反应是「中间那个井号是什么意思是不是比 C 语言难一倍」。其实那个符号读作 Sharp四个加号摞在一起排版太挤就写成了 #它只是个名字不代表难度等级。C# 是微软推出的一门通用编程语言你敲下的每一行代码最后都会变成电脑能照着执行的指令写一个算账的小工具、做一个带按钮的桌面软件、给游戏里的角色写一段移动逻辑用的都是同一套语法。对零基础的人来说眼下不用去啃编译器、内存模型这些词。你只需要记住一件事C# 是一门规则比较严、但报错说得很清楚的语言很适合当作编程入门的第一站。这份 C# 编程新手入门指南就是按「先装软件、再写出第一个能跑的程序、然后一点点加功能」的顺序排下来的你顺着往下走就行。2. 为什么值得从 C# 入手它到底能做出什么学任何东西之前人都会先问一句「学了能干嘛」。这个问题问得一点不功利反而是最该问的。如果一门语言你学三个月还看不到任何能拿出手的东西热情基本就消耗完了。C# 好就好在它的「能干嘛」离你特别近而且不需要你先补一堆前置知识。2.1 一门语言三个方向桌面、网页和游戏C# 最常见的三个落地场景用大白话说就是第一做 Windows 上的桌面软件带窗口、带按钮、能双击运行的那种安装包发给别人就能用第二做网页后端也就是用户看不见的那部分负责处理登录、存数据、算逻辑第三做游戏很多独立游戏和小型 3D 项目都用它写玩法脚本。这三个方向用的语法是同一套。也就是说你花时间学的if、循环、类、方法在这三个地方都能直接用上不会出现「学完发现换个方向要重学」的情况。对新手来说这一点很关键因为你此时还不知道自己最终想做哪一行选一门「不挑方向」的语言等于给自己留了三条路。拿一个很具体的例子对比同样是想做一个「输入身高体重、算出身高体重指数」的小工具用命令行跑出来是 20 行代码套一个窗口界面大概再加 30 行。这个体量的东西学两三周就能做出来做出来还能发给朋友用。这种「今天学的东西明天就能变成成品」的反馈是新手能不能坚持下去的分水岭。2.2 C# 和 .NET 的关系菜谱和厨房新手最容易卡住的第二个概念是搞不清 C# 和 .NET 到底谁是谁。这里用做饭打个比方。C# 是菜谱是你写下来的、给人看的步骤它规定了「先放油、再放菜、最后放盐」这样的顺序。.NET 是厨房是真正干活的地方锅、灶、冰箱全在里面。你写完菜谱得把菜谱交给厨房厨房才能把菜做出来。菜谱本身是不会自己做菜的。放到技术上你写的.cs文件是菜谱.NET 是那套运行环境它负责把你的代码翻译成机器能懂的东西并执行。这也是为什么装软件的时候你需要装的不只是一个写代码的工具还得把 .NET 的运行环境一起带上。第一次接触这个概念会有点绕你可以先记一个粗糙但够用的结论写代码用 C#跑代码靠 .NET写代码的软件叫 Visual Studio。这三样东西的关系理顺之后后面看到「目标框架」「.NET 版本」「运行时」这些词你就不会一脸懵了。它们说的都是「厨房的规格」不同规格的厨房能做的菜略有差别但对你入门阶段写的那几十行代码来说几乎感觉不到区别。2.3 为什么新手的第一门语言选它不算亏第一条理由是语法规整。C# 要求你写分号、要求你写清楚类型、要求你把花括号配对这些规矩在初期确实显得烦人但它带来的好处是错误会被尽早发现。你少写一个符号编辑器当场就画红线而不是等到程序跑起来莫名其妙崩掉再回头找一个小时的 bug。这种「错在哪一行、错在哪个字符」的即时反馈对零基础的人极其友好。第二条理由是工具强。Visual Studio 这类编辑器会帮你补全代码、提示参数、标出没被用到的变量。你在里面敲一个点号它会把所有能接的方法列出来给你挑你甚至可以先不认识某个方法靠读它弹出的说明猜出用途。很多人的第一段程序不是「想出来的」是「试出来的」这种工具能让你放心试试错成本低。第三条理由是示例多。C# 出现得早、用的人多你能找到的学习材料覆盖了从「什么是变量」到「怎么处理多线程」的完整坡度。这份资源本身就是按这个坡度排的前面从编程语言、安装 Visual Studio、写 Hello World、加注释开始中间铺变量、类型系统、基本数学、用户输入、判断、循环、数组、方法后面才进面向对象和异步、线程这些「高级主题」。你不需要自己规划顺序按它的章节走就有一段完整的路。至于需要提前准备什么一台普通的电脑就够了不需要高配显卡也不需要数学多好。入门阶段用到的数学就是加减乘除和取余剩下的全是逻辑思维。3. 第一步怎么迈装好 Visual Studio 并跑通第一个程序这一章是全篇最该动手的一章。前面两章你可以躺着读从这一章开始建议打开电脑边看边做。第一次配置环境确实会有点手忙脚乱但只要跑通一次后面就顺了。3.1 安装 Visual Studio选对版本、勾对选项打开官网下载页面你会看到好几个版本新手直接选社区版就行它对个人学习是完全够用的功能上不缺什么关键东西。下载下来是个安装器运行之后不会立刻装完而是先弹出一个「工作负载」的选择界面。这一步是新手第一个容易走偏的地方。界面上会列出一大堆选项什么网页开发、移动开发、游戏开发全都带勾选框。你不需要全勾全勾会让安装体积膨胀到几十个 G装半天还占硬盘。入门阶段只勾与桌面开发相关的那一项就够了它包含了写 C# 控制台程序和桌面程序需要的东西。安装过程可能十几分钟也可能更久取决于网速。这段时间别关窗口也别急着重启。装完之后第一次启动会比较慢因为要初始化一堆配置这是正常现象不是卡死了。顺带说一句如果你用的是 Mac 或者 Linux写 C# 也不是不行只是用的编辑器不一样命令行工具会多一些。入门阶段为了少踩环境的坑建议还是优先用 Windows 加 Visual Studio 这套组合网上能对上的截图和教程最多出了问题好查。3.2 新建第一个项目从「控制台应用」开始打开软件在起始页选「创建新项目」。搜索框里输入「控制台」会出来一个叫「控制台应用」的模板选中它点下一步。接下来要填两个东西项目名称和位置。项目名称随便起比如HelloWorld注意别用中文、别用空格也别用特殊符号。这不是玄学是因为项目名会变成文件夹名和程序集名某些工具链对中文路径处理得不好早期养成用英文命名的习惯能省掉一堆莫名其妙的麻烦。位置就选一个你找得到的文件夹别放在桌面最外层回头文件一多就乱了。点创建之后你会看到编辑器自动生成了一段代码。这段代码就是你的起点别急着删。3.3 逐行读懂 Hello World生成的代码大概长这样using System; // 引入 System 命名空间控制台相关功能都在里面 namespace HelloWorld // 命名空间相当于给代码划一个区域避免重名 { class Program // 类C# 的代码都住在类里面 { // 程序的入口运行时会从这里开始执行 static void Main(string[] args) { Console.WriteLine(Hello, World!); // 往控制台输出一行字 Console.ReadLine(); // 等用户按回车防止窗口一闪而过 } } }一行一行说。using System;是告诉编译器「我要用 System 这个区域里的东西」Console就在这个区域里。namespace HelloWorld是你自己划的区域名字通常跟项目名一致。class Program是装代码的容器现阶段你把它理解成「一个盒子」就行所有能执行的代码都得放进某个盒子里。static void Main(string[] args)这一行是整个程序的门。程序启动时运行环境会去找这个名字叫Main的方法从它的第一行开始执行。你把它删掉或者拼错程序就找不到入口直接报错。Console.WriteLine(...)是「输出一行并换行」引号里的内容原样打印。后面的Console.ReadLine()是「等用户输入一行」它在这里的作用不是收集数据而是让窗口停住否则程序跑完瞬间关闭你根本看不清输出了什么。这个细节很多教程懒得讲结果新手第一次运行看到黑窗口一闪就没还以为自己装错了。3.4 改一改再跑一次让程序跟你说话看懂之后立刻动手改这是最快建立感觉的方式。把Main里的内容换成下面这几行Console.Write(你叫什么名字); // Write 不换行光标停在问号后面 string name Console.ReadLine(); // 读入用户敲的那一行存进 name Console.WriteLine(你好 name 欢迎开始学 C#。); // 用加号把文字拼起来 Console.ReadKey(); // 再停一下等你按任意键Console.Write和Console.WriteLine只差一个Line区别是前者不换行。string name声明了一个能装文字的变量Console.ReadLine()把用户敲的内容读进来交给它。最后那句里的在这里不是加法是「把两段文字接起来」这在 C# 里叫字符串拼接。改完按顶部的启动按钮或者直接按 F5。如果弹出窗口问你叫什么名字你输入之后它能回你一句恭喜你已经完成了从「读代码」到「改代码」的跨越。这一步看起来简单但它是后面所有内容的地基值得多跑几遍。4. 打牢地基变量、类型、判断、循环和方法怎么写这一章是整个入门阶段信息量最大的部分也是这本指南里篇幅最长的板块。别指望一遍全记住正确的做法是每一小节都自己敲一遍、跑一遍跑通了再往下走。4.1 变量和类型给数据准备一个合适的盒子变量就是一个带名字的盒子你把数据放进去之后用名字就能取出来。C# 在这一点上比较较真你得先说明这个盒子装什么类型的东西之后就不能随便换。int age 18; // 整数日常计数用它 long bigNumber 9000000000L; // 更大的整数超出 int 范围时用它 double price 9.9; // 小数默认的小数类型 decimal money 19.99m; // 金额计算用它精度更稳后缀 m 不能少 char grade A; // 单个字符用单引号 bool isReady true; // 真或假只有两个值 string title C# 入门; // 一串文字用双引号这里最需要留意的是后缀。decimal后面要加mfloat后面要加f不加的话编译器会把它当成double然后在你赋值给别的类型时报错。金额为什么不用double因为小数在计算机里是近似存储的0.1 0.2用double算出来可能不是精确的0.3涉及钱的地方用decimal更稳妥这种小细节第一次碰到会觉得是玄学记住结论照做就好。类型系统这块还藏着一个新手必踩的点整数除法和类型转换。5 / 2在 C# 里结果是2而不是2.5因为两边都是整数结果也只保留整数部分。想拿到小数得让其中一边变成小数比如5 / 2.0或者写(double)5 / 2做一次强制转换。这不是 bug是规则。4.2 让程序做判断if 和 switch程序会算数之后下一步就是会「看情况」。if就是干这个的int score 87; if (score 90) // 条件成立就走这一块 { Console.WriteLine(优秀); } else if (score 60) // 上一个不成立时再看这个 { Console.WriteLine(及格); } else // 前面都不成立走这里 { Console.WriteLine(需要再练练); }条件里的、、!、这些叫关系运算符结果只有真或假正好对上bool类型。要注意的是判断相等必须写两个等号一个等号是赋值写成if (score 90)编译器会直接报错这个错新手平均要犯三次以上。多个条件可以用并且和||或者连起来!表示取反。当判断的分支特别多、而且都是「等于某个固定值」时用switch会比一串else if清爽switch (day) { case 1: Console.WriteLine(周一); break; // 每个分支结束都要 break case 2: Console.WriteLine(周二); break; default: // 都不匹配时走这里 Console.WriteLine(其他); break; }break千万别漏C# 不允许一个case执行完直接滑进下一个case漏了会编译不通过。这是它跟某些语言不一样的地方。4.3 重复的事交给循环for、while 和 foreach要打印十遍同一句话写十行显然是笨办法。循环就是干这个的for (int i 0; i 5; i) // 初始化继续条件每轮结束后做什么 { Console.WriteLine(第 i 轮); }for括号里三段用分号隔开第一段是起始值第二段是「只要条件还成立就继续」第三段是每轮跑完做什么。上面这段就是经典的「从 0 数到 4」。while则是「只要条件成立就一直转」适合事先不知道要转多少次的情况do-while的特点是先执行一次再判断至少会跑一轮。当你要遍历一堆数据时foreach更省事int[] scores { 90, 85, 77 }; // 数组一排同类型的盒子 foreach (int s in scores) // 依次取出每一个交给变量 s { Console.WriteLine(s); }数组的长度是固定的创建时是多少就只能装多少。想数出它有几个元素用scores.Length。下标从 0 开始所以第一个是scores[0]最后一个是scores[scores.Length - 1]这个「从 0 开始」的习惯要早点建立越界访问是后面最常见的错误之一。循环里还有两个关键字值得记一下break直接跳出整个循环continue跳过本轮剩下的代码直接进下一轮。它们常和if配合用来处理「找到就停」或者「这一条不合格就跳过」的场景。4.4 把代码打包方法让重复变少当同一段逻辑你写了三遍就该把它抽成方法了。方法就是一小段有名字的代码给它东西它给你结果// 定义在 Program 类里面、Main 方法外面 static int Add(int a, int b) { return a b; // return 把结果交回去 } // 在 Main 里这样调用 int sum Add(3, 5); // 把 3 和 5 传进去拿到 8 Console.WriteLine(sum);括号里的int a, int b叫参数是入口int在方法名前面是返回值类型说明它会吐出什么类型的结果。只做事不返回结果的返回值位置写void。static这个词现阶段先照抄等你学到面向对象那一章自然会理解它为什么在那儿。方法的好处不只是少打字。它把一段逻辑装进一个盒子里起了个名字之后你只要看名字就知道它在干嘛出问题也可以单独测这一块。这种「拆开再组装」的思路是编程里最有用的思维方式之一比记住任何语法都值钱。5. 常见问题排查新手最容易翻车的 5 个坑写代码的时候报错是常态不报错才奇怪。真正让人卡住的往往不是报错本身而是不知道怎么读它。这一章列的都是我在带新手时反复见到的五个坑每条按「现象、原因、解决」的顺序写遇到的时候对着查就行。5.1 少了分号、括号不配对编译器在说哪一行现象代码写完按运行红色的错误列表里出现CS1002提示「应输入 ;」或者提示某个花括号不匹配。有时候它指向的行看起来完全没问题。原因C# 要求每条语句结尾有分号花括号必须成对出现。编译器的定位有时会偏上一两行——它是在读到某个位置才发现「这里不对」而真正的错误可能在前一行。解决不要只盯报错行往前看一到三行。花括号的技巧是每写一个{就立刻补一个}然后再往中间填内容而不是写完一大段再回头找配对。Visual Studio 里点一下花括号它会高亮对应的另一半这个功能救过很多人。5.2 输入的东西是文字不是数字为什么算出来是「53」现象程序让用户输入一个数字用户输入5程序让它乘以 2结果打印出55或者干脆崩掉。原因Console.ReadLine()拿回来的永远是一段文字也就是string不是数字。你对文字用它做的是拼接5 5自然得到55。而如果拿它去做乘除编译器直接报错因为文字不能做数学运算。解决先转换再用。Console.Write(请输入一个整数); string input Console.ReadLine(); int number int.Parse(input); // 把文字转成整数 Console.WriteLine(number * 2); // 这时候才是真的乘法要提醒一句Parse遇到用户输入了字母会抛异常程序直接退出。想稳一点可以用int.TryParse它在转换失败时返回 false 而不是崩溃等学到异常处理那一章你就明白该怎么处理得更优雅了。5.3 程序一闪而过什么都没看清现象点运行黑色窗口闪一下就没了输出根本来不及看。原因控制台程序在Main跑完那一刻就结束了窗口跟着关闭。这不代表你的代码没执行只是执行得太快。解决在Main的最后一行加Console.ReadLine();或者Console.ReadKey();让程序停下来等你。注意是在最后一行加加在中间会挡住后面的逻辑。调试时也可以用断点让程序跑到某一行停住这个技巧在第 6 章会提。5.4 找不到入口程序不包含适合的静态 Main 方法现象代码看着没错但运行时报错大意是「程序不包含适合入口点的静态 Main 方法」。原因常见有三种。一是Main拼错了比如写成main——C# 区分大小写Main和main是两个完全不同的名字。二是返回类型或参数写错了把static void Main(string[] args)改成了别的东西。三是这个类被你自己建的另一个项目或者另一个文件抢了入口。解决先检查拼写和大小写再确认整个项目里只有一个Main。如果你是复制粘贴了别人的代码检查一下是不是把整段class Program连同Main一起粘进了已有的文件里出现了两个入口。5.5 改完代码没生效还在跑旧版本现象明明改了输出文字运行出来还是老的。或者报错消失了但行为还是不对。原因多半是生成失败了但你没注意运行的是上一次成功编译的产物也可能是同时开了多个项目启动的其实不是你正在编辑的那个。解决先看底部有没有红色的错误提示有错就一定是跑旧的。改完代码养成先「生成」再「运行」的习惯别直接按运行跳过检查。另外看一眼解决方案里加粗显示的项目名那才是当前的启动项目。6. 下一步学什么从会写语句到能搭出一个完整程序基础语法跑通之后很多人会陷入一段迷茫期语句都会写但给一个真实需求就无从下手。这个断层几乎人人都遇到原因不在于你语法没学好而在于还不会「组织代码」。接下来该学的是面向对象编程。别被这四个字吓到它的核心问题很朴素当你有一堆数据比如一个学生的姓名、年龄、成绩和一堆操作这些数据的函数时怎么把它们收拾整齐。答案是打包成一个类数据变成字段和属性操作变成方法用的时候只跟这个类打交道。这本指南把面向对象放在第三部分用井字棋这样的小项目带你把概念落地这个安排很合理——先做出来再讲清楚。按下面的顺序走每一步都有能检查的成果阶段学什么大概投入怎么算过关第一阶段变量、类型、判断、循环、数组、方法两到三周能独立写出「猜数字」小游戏第二阶段类、属性、继承、多态、接口、泛型三到四周能把猜数字游戏改写成三个类协作第三阶段文件读写、异常处理、调试技巧两周程序出错时不再崩能给出友好提示第四阶段委托、事件、Lambda、异步视情况能读懂别人写的异步代码这份资源里还有一部分内容容易被新手跳过就是「掌握工具」那几章依赖管理、常见编译错误、调试、项目文件结构。它们看起来不像「编程」但作用很大。会调试的人找 bug 的效率是不调试的人的十倍。我建议在学语法的同时就把调试器用起来在代码里点一个红点设断点一步步往下走看每个变量当前是什么值这比盯着代码猜要靠谱得多。还有一个具体建议每学完一个概念就把它塞进你那个猜数字小游戏里。学会循环就让游戏能反复猜学会数组就记录猜过的数字学会类就把「玩家」和「答案」拆成两个对象。同一个项目反复加工比做十个半途而废的示例强得多。最后说一个我自己的教训。刚学的时候我总想「先把书看完再动手」结果看到一半前面全忘了白白耗掉一个月的热情。从那以后我每次看完一小节都强制自己关掉教程、从空白文件重新敲一遍哪怕照着记忆敲得磕磕绊绊也比复制粘贴强。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
冒泡排序原理、优化与Python实现详解 1. 冒泡排序基础原理 冒泡排序作为最经典的排序算法之一,其核心思想就像碳酸饮料中的气泡上浮过程。每次遍历都会将当前未排序部分的最大元素"冒泡"到正确位置。这个看似简单的算法却蕴含着重要的编程思维训练价值。
1.1 算法工作流程 冒泡排序的基本操… · 2026/11/3 20:29:25
Unity协程痛点与UniTask迁移实战:从原理到性能优化 协程写多了,总有一种“能用但不敢细看”的感觉——yield return new WaitForSeconds满天飞,回调里套回调,异常被吞掉还找不到是谁吞的,场景一卸载协程就悄无声息地断在半路。我最早接触 UniTask 的动机特别朴素:某个项… · 2026/11/3 16:15:35
IoTDB与Grafana工业时序数据可视化监控平台搭建实战 凌晨两点被人从床上薅起来,说产线监控大屏整页转圈、一个数据都刷不出来——这种场面我经历过不止一次。前几次是查询把原始点位一股脑儿全拉给前端,带宽和浏览器先扛不住;后面一次更干脆,时序库在批量写入的当口把磁盘 IO 打满&a… · 2026/11/3 19:06:12
Selenium自动化测试:电子忏悔室与赎罪券生成实践 1. 项目背景与核心思路 这个看似荒诞的项目标题"用Selenium操控教堂:电子忏悔室自动生成赎罪券"实际上是一个极具创意的技术实验。它巧妙地将自动化测试工具Selenium的应用场景扩展到了宗教领域,构建了一个能够模拟人类操作、自动完成电子忏悔… · 2026/11/3 22:42:25
多人同时编辑Excel:共享地址、权限与协作规范实战 1. 多人同时编辑Excel,真正的拦路虎不在软件功能每到季度末、项目节点、盘点周期,办公室里最容易出现的一幕就是:五个人分头填同一张表,收上来五个附件,文件名依次是"汇总表.xlsx""汇总表-修改.xlsx&qu… · 2026/11/3 22:42:25
88E1512千兆以太网PHY调试:RGMII/SGMII、EEE与VCT排查 简介:Marvell 88E1512 芯片数据手册,面向以太网PHY选型、硬件原理图设计及嵌入式网络调试人员,用于快速掌握这款集成10/100/1000 Mbps节能以太网收发器的功能定位、性能边界与设计约束。压缩包仅含1个PDF文件,大小约1.05MB&#x… · 2026/11/3 22:42:25
一人公司运营实战:政策、成本与效率优化 1. 一人公司的政策背景与市场环境2023年新修订的《公司法》正式实施后,一人有限责任公司(自然人独资)的注册门槛显著降低。最明显的变化是取消了注册资本实缴要求,改为完全的认缴制。这意味着创业者可以用1元注册资本成立公司&… · 2026/11/3 22:42:25
EDID 128字节字段解析与HDMI扩展块生成校验 简介:本资源是一份面向显示驱动开发、硬件调试与显示器固件工程师的EDID编程规范文档,聚焦扩展显示识别数据(EDID)这一显示终端与信号源之间的信息交换结构。内容从数据结构层面拆解128字节基本块(可扩展至256字节&… · 2026/11/3 22:42:24
条码标签打印软件流水号跳号设置与漏号排查指南 条码标签打印软件里最容易被做成“事故”的一个功能,就是流水号。我这些年帮不少仓库、产线、门店处理过标签打号的问题,其中问得最集中的一类就是——为什么我的流水号打出来是跳号的。有意思的是,“跳号”这个词在条码标签打印软件里其实是… · 2026/11/3 22:41:24
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46