C#基础刷题坡道:从语法覆盖到完整控制台小项目
简介C#基础练习题资源包聚焦C#语法与面向对象核心适合刚入门的学习者通过刷题巩固基础也适合初级开发者查漏补缺。内容覆盖变量与数据类型、条件与循环、函数重载、数组与集合操作、类与继承、接口与抽象类、异常处理、枚举与委托、文件读写、LINQ查询、异步编程和泛型几乎涵盖C#入门阶段所有高频考点。压缩包内共1670个文件除大量cs源码外还包含exe可运行示例、aspx页面、项目工程文件csproj/sln以及配套图标、位图与数据库文件整体约17.87MB便于边看效果边对照源码理解运行逻辑。目前已有729人学习练习题与微型示例项目组合适用于课后训练、期末复习或面试基础考核。通过动手完成这些练习学习者能系统掌握从基本语法到委托事件、LINQ等进阶特性的典型写法逐步具备独立编写和调试C#程序的能力。1. 把 C# 基础练习题做成刷题坡道从语法覆盖到能写小项目很多 C# 新手卡在同一个地方语法书翻完了视频课也刷了一落到“写一个完整的控制台程序”就不知道第一行代码该敲什么。这套基础练习题就是用来打穿这个瓶颈的——它把 C# 的核心语法点拆成一组小而明确的编程题从变量、分支、循环一路推到集合、字符串和类的基础封装每题都聚焦一个知识点适合刚学完语法、想靠刷题建立手感的人。作为把整套题逐题跑过一遍的工程师我可以先给结论这套题的价值不在于单个题目的难度而在于题目顺序形成的坡道。顺着刷每个语法点都有机会至少亲手写一遍跳着刷容易在综合题上翻车。2. 练习题集的结构与难度梯度先看懂按语法点组织的刷题地图拿到题集第一件事别急着打开第一道题。建议先花十分钟看目录。这套练习的组织方式简单说就是把同一个语法主题的多道题放在一起形成一条从“确认概念”到“能做小项目”的坡道。直接跳着做的人大概率会在综合题上卡住然后怀疑自己不是写代码的料——其实只是顺序不对。2.1 六个主题层的划分依据为什么按语法点而不是按场景常见做法是把 C# 基础练习按六个层次组织变量与类型转换、分支、循环、集合与数组、字符串处理、类与对象基础。这套题集基本延续了这个分层但每个主题下还加了“变式题”——同一个知识点换一个输入格式或输出要求让你不得不重新组织逻辑而不是背答案。这么分层有三个实际好处。第一调试技能是逐步建立的。循环主题的题不涉及类和对象出错时只需要盯着循环条件和变量变化问题面小新手不至于一次面对三四个语法点同时出错。第二语法点需要重复才能形成肌肉记忆。比如string.Split的参数、ListT.RemoveAll的用法、int.TryParse的返回值看十遍都不如亲手写一遍有效。第三为综合题打底。题集后半部分的题往往会组合两到三个语法点比如“用循环读入数据存进ListT再用字符串方法格式化输出”如果你前面每个点都单独练过这题拆开就能做。这套题里有一个很典型的递进例子主题“循环”下的第一题是“输入 5 个整数输出它们的总和”变式题是“输入若干整数直到用户输入 end输出总和”再往后一道是“输入若干整数统计正数、负数、零的个数”。第一题只需要一个for循环加累加第二题引入循环终止条件第三题要用集合加分支组合。每道题只比上一道多一个知识点这是我认为这套题集最值得抄的地方。Listint numbers new Listint(); while (true) { string line Console.ReadLine(); if (line end) break; if (int.TryParse(line, out int value)) numbers.Add(value); } int positive 0, negative 0, zero 0; foreach (int n in numbers) { if (n 0) positive; else if (n 0) negative; else zero; } Console.WriteLine($正数: {positive}, 负数: {negative}, 零: {zero});这段代码对应第三道变式题。while (true)配合break是控制台练习里很常用的“读入直到满足条件”写法int.TryParse返回布尔值能过滤掉非数字输入避免int.Parse直接抛异常。foreach遍历Listint比for按索引访问更安全少写一个Count边界判断。练这题时你可以试着把break条件改成“输入空行结束”这个改动会立刻牵动TryParse的分支逻辑是很好的进阶练习。2.2 难度标记与刷题节奏简单题值得全部手动敲一遍很多刷题者追求“只做难题”在基础阶段这是个误解。这套题集里简单题占多数中等题穿插其中难题基本集中在类和对象主题的最后几道。我的建议是简单题全部手动敲一遍不要在脑子里过一遍就跳过。原因有两个。第一简单题的代码往往只有几行但每一行都是高频写法。比如Console.ReadLine() ?? 这个组合新手往往不理解??是干嘛的——ReadLine在输入流结束时可能返回null?? 把它变成空字符串防止后续调用.Length或.Split时抛NullReferenceException。这种细节只有在亲手写出来、再故意删掉?? 看它崩溃一次才能真正记住。第二简单题容易让人忽略边界。拆这套题时我发现最容易翻车的恰好是“看起来简单”的题。比如“输入一个字符串输出它的长度”大多数人的第一版代码是这样的string input Console.ReadLine(); Console.WriteLine(input.Length);逻辑上没问题但Console.ReadLine()在输入流结束时会返回null此时input.Length直接抛异常。简单题省略了边界处理并不代表边界不存在。所以我的习惯是每做完一道简单题都强制自己写一个“边界输入”试一遍——空行、超长字符串、中文、带空格的内容看程序会不会崩。这套题集的好处是每题都自带“输入约定”你可以对照约定设计测试输入把边界问题提前暴露出来。难度标记方面这套题的常见做法是用一星到三星标在题号后面。一星题聚焦单一语法点二星题开始组合两个点三星题要求你独立设计一个小流程。我建议一星题每天做八到十道二星题每天四到五道三星题每天一到两道重点是每道题都改一次输入或输出格式把它变成自己的题。刷题节奏比刷题数量重要得多这是我从这套题里得到的最大收获。3. 从下载到跑通第一题命令行环境准备与工程初始化这套题集下载下来是一个或多个.csproj工程文件夹。很多新手折在第一步不知道在哪里运行它。我的建议是从一开始就使用命令行来编译和运行不要依赖某个特定的集成开发环境。这样换机器、换编辑器都能跑遇到报错还能直接看懂命令行里给的信息排查起来更直接。3.1 准备 .NET SDK 与工程结构先用 dotnet --version 探底在动手做题之前先确保机器上有 .NET SDK。打开终端Windows 下是 PowerShell 或 cmdmacOS/Linux 下是系统终端执行dotnet --version如果提示找不到命令说明没装 .NET SDK。这时候需要先安装一个长期支持LTS版本的 SDK。我一般还会顺手执行dotnet --list-sdks确认本机安装了几个版本。机器上同时存在多个版本的 SDK 时dotnet run会默认选最新的一个如果练习题项目里指定的目标框架版本更老编译时会看到一长串兼容性提示提前看一眼能省掉不少困惑。这套题集常见的工程布局有两种。第一种是单工程多文件一个.csproj对应一整套题Program.cs里用switch按题号跳转到对应方法。第二种是每道题一个文件夹每个文件夹里是一个独立的控制台工程根目录放一个.sln解决方案文件把它们串起来。我在实际跑的时候更推荐第二种布局CSharpExercises/ ├── Exercise01_HelloWorld/ │ ├── Exercise01_HelloWorld.csproj │ └── Program.cs ├── Exercise02_OddEven/ │ ├── Exercise02_OddEven.csproj │ └── Program.cs ├── Exercise03_SumList/ │ ├── Exercise03_SumList.csproj │ └── Program.cs └── CSharpExercises.sln这种多工程布局的好处是编译隔离。某一道题的代码写坏了只影响它自己的工程不会拖垮整套题。排查问题时dotnet build会直接告诉你“在 Exercise03 里有个错误”而不是在几千行的大文件里大海捞针。而且刷题时经常要跳着做多工程可以自由切换不用注释掉一大段不相关的代码。3.2 用 dotnet run 跑通第一道题从创建到输出确认环境没问题后先用最经典的方式创建一个控制台工程并跑起来dotnet new console -n Exercise01 cd Exercise01 dotnet run这里-n参数指定工程名dotnet new console会生成一个带.csproj和Program.cs的最小控制台工程dotnet run会先编译再运行。如果工程文件不在当前目录可以用dotnet run --project Exercise01.csproj指定路径但一般情况下不需要。跑通模板之后替换成第一道练习题的实现。比如题集里常见的“读取一个名字并输出名字长度”string name Console.ReadLine() ?? ; Console.WriteLine($你好{name}你的名字有 {name.Length} 个字符。);这里?? 是处理 null 的惯用写法name.Length拿到的是 UTF-16 码元数量。中文字符在这个计算里算一个但 emoji 或生僻扩展字符可能算两个。这个细节在基础阶段不需要深究但如果你输入的字符串里混入了 emoji输出长度和预期不一致时不至于一头雾水。如果用的是 Visual Studio Code 而不是终端装一下 C# 扩展打开工程文件夹后按 F5 就能调试。命令行跑题和调试器跑题的区别在于命令行适合快速验证输出调试器适合在变量值不对时单步看执行过程。我一般先用命令行跑通再用调试器打断点观察循环变量的变化。这道题练完后建议把Console.ReadLine()换成固定字符串试一次再把?? 删掉试一次体会两种写法的差异这比多做十道题更能建立边界意识。4. 典型题拆解循环、集合与字符串处理的四个实战场景这一章从题集里挑几类最有代表性的题把从读题到写完代码的完整路径走一遍。重点不是“答案是什么”而是“看到题目后怎么一步步把逻辑捋出来”以及每段代码背后的参数选择。4.1 用 List 循环读入并完成分组统计题目读取若干整数成绩直到空行结束输出及格人数和不及格人数。这是循环主题里比较综合的一道题因为它同时用到了while、ListT和foreach。Listint scores new Listint(); while (true) { string? input Console.ReadLine(); if (string.IsNullOrEmpty(input)) break; if (int.TryParse(input, out int score)) scores.Add(score); } int pass 0; foreach (int s in scores) { if (s 60) pass; } Console.WriteLine($及格人数: {pass}, 不及格人数: {scores.Count - pass});逻辑分三步循环收集数据、遍历统计、输出结果。string? input中的?表示这个变量可能为 null配合string.IsNullOrEmpty能同时处理“用户直接按回车”和“输入流结束返回 null”两种情况。TryParse比Parse安全之处在于它不会抛异常解析失败时返回 false并把out int score赋值为 0但因为TryParse返回 false 时不会执行Add所以 0 不会被错误地当成有效成绩存进列表。这题有个很常见的变式把“空行结束”改成“输入 -1 结束”。改法是把break条件换成if (score -1) break;但要注意-1本身不能被当成成绩存进去所以TryParse和break的判断顺序要调整。先解析、再判断是不是 -1、最后再决定是否Add。这一个顺序问题就是这道题真正的考点。4.2 字符串拆分与过滤一个参数避免空字符串陷阱题目输入“A,B,,C”这样的逗号分隔字符串逐个输出其中的非空姓名。这题考察string.Split的重载参数。string input Console.ReadLine() ?? ; string[] parts input.Split(,, StringSplitOptions.RemoveEmptyEntries); foreach (string part in parts) { Console.WriteLine(part.Trim()); }Split(,)会拆出四个片段其中一个是空字符串加上StringSplitOptions.RemoveEmptyEntries之后空字符串会被自动过滤输出就变成 A、B、C 三个。Trim()用来去掉姓名前后的空格因为实际输入可能是A, B, C这种带空格的格式不 Trim 的话输出会带着一个前导空格字符串比较时会踩坑。这个参数在中文场景里尤其重要。输入里如果出现全角逗号Split(,)拆不动输出会是完整一整行。遇到这种看起来“没生效”的情况先检查输入里的逗号是英文逗号,还是中文逗号。基础练习题不会故意为难你但实际写代码时这是必踩的坑。4.3 把业务规则封装到类里属性、构造函数与方法的拆分面向对象主题的题目开始要求你用类组织代码。最常见的例子是定义一个学生类包含姓名和成绩再算平均分。class Student { public string Name { get; set; } public int Score { get; set; } public Student(string name, int score) { Name name; Score score; } }ListStudent students new ListStudent(); while (true) { string line Console.ReadLine() ?? ; if (line end) break; string[] parts line.Split(,); if (parts.Length 2 int.TryParse(parts[1], out int score)) { students.Add(new Student(parts[0].Trim(), score)); } } double average students.Count 0 ? 0 : students.Average(s s.Score); Console.WriteLine($平均分: {average:F1});这里Average(s s.Score)是 LINQ 的用法是一个 lambda 表达式含义是“取每个学生的 Score 属性”。{average:F1}中的F1是格式说明符表示保留一位小数。这题的意义在于数据从“散落的变量”变成“对象的属性”后续不管是排序还是筛选操作对象都比操作多个平行数组清晰得多。练习题做到这一步基本就摸到工程代码的门槛了。5. 避坑与排查这套练习题最常见的五个翻车现场刷这套题的过程中新手翻车的点非常集中。下面五条是按出现频率排的每一条都按“现象 → 原因 → 解决”来写方便你对照排查。5.1 dotnet run 报“找不到项目文件”现象在练习题根目录执行dotnet run终端输出 MSB1003提示找不到项目文件。 原因根目录下没有.csproj文件。练习题是多个子工程根目录只有.sln而dotnet run默认寻找当前目录下的项目文件。 解决先cd到某个子工程目录再运行或者用指定路径的方式dotnet run --project Exercise01/Exercise01.csproj5.2 控制台中文输出乱码现象程序里Console.WriteLine(你好)运行时屏幕上显示方块或问号。 原因Windows 终端默认代码页通常是 GBK而 .NET 默认以 UTF-8 输出编码不一致导致显示错乱。 解决在程序入口处强制设置输出编码Console.OutputEncoding System.Text.Encoding.UTF8;或者在终端执行chcp 65001把代码页切到 UTF-8。两种方式选一种就行我推荐第一种因为它在代码里留了记录换机器也不会忘。5.3 Console.ReadLine 与 int.Parse 联手崩溃现象输入空行后直接回车程序抛FormatException输入“12a”这种带字母的数字也崩溃。 原因int.Parse要求输入字符串必须整体是合法的整数格式空字符串和混合格式都无法解析。 解决用int.TryParse代替int.Parse。前者的返回值是布尔值解析成功时为 true失败时为 false配合out int value可以直接拿到解析结果不会抛异常。if (int.TryParse(Console.ReadLine(), out int value)) { // 只有解析成功才会走到这里 }5.4 使用 List 时报“找不到类型或命名空间”现象代码里写了Listint list new Listint();编译时报错说找不到List类型。 原因旧版 .NET 模板需要手动引入using System.Collections.Generic;才能使用泛型集合。新版模板默认启用了隐式 using所以不需要手写。 解决先看报错的工程是基于哪个 SDK 创建的。如果代码文件顶部没有using System.Collections.Generic;补上这一行再编译。如果补上之后还报错检查是不是引用了错误的程序集或目标框架版本。5.5 循环变量与外部变量同名现象在循环里写了for (int i 0; i 10; i)循环外又声明了一个int i 0;编译报错 CS0136。 原因局部变量的作用域覆盖了外部变量名C# 不允许在嵌套作用域里重复声明同名变量。 解决把外部变量改名比如total或index。这种问题在练习题里看起来低级但实际项目里经常发生在重构代码时——把一段逻辑从方法里抽出来不小心和原变量重名。遇到 CS0136 别慌改个名就好。6. 把题集变成自测题用批处理脚本批量验证与自动比对刷完整套题之后最大的遗憾是没有一个“一键验证”的机制。手动跑一遍所有题目再逐个看输出对不对十分消耗耐心。我后来做了一套批处理脚本把整个题集变成可重复运行的自测题集。思路很简单每道题配两个文本文件input.txt存放标准输入expected.txt存放期望输出。脚本对每个子工程执行“编译并运行”把input.txt的内容喂给程序运行结果写入out.txt再和expected.txt做逐行比对。$projects Get-ChildItem -Directory -Filter Exercise* foreach ($proj in $projects) { $inputFile Join-Path $proj.FullName input.txt $expectedFile Join-Path $proj.FullName expected.txt if (-not (Test-Path $inputFile)) { continue } dotnet run --project $proj.FullName $inputFile out.txt $diff Compare-Object (Get-Content out.txt) (Get-Content $expectedFile) if ($diff) { Write-Host FAIL: $($proj.Name) } else { Write-Host PASS: $($proj.Name) } }Get-ChildItem -Directory -Filter Exercise*会抓取所有以 Exercise 开头的子目录 $inputFile是 PowerShell 的输入重定向把文件内容当作程序的标准输入Compare-Object按行比较两个文件返回非空就说明输出不一致。脚本跑完屏幕上直接列出失败的项目名然后只需要去修那几道题。这套脚本最大的价值是让“刷题”变成“验证”。从那以后我拿到任何一套练习题都会先拆出输入输出再跑一遍批量验证脚本确认环境能编能跑、输出和参考答案一致再往深里刷。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

PyTorch复现CBOW词向量:从数据管道到训练避坑全记录

PyTorch复现CBOW词向量:从数据管道到训练避坑全记录

简介:面向自然语言处理入门者与PyTorch实践者的词向量模型资源包,聚焦词嵌入基础原理与实际应用。通过练习小型英文语料(1803词)训练CBOW或Skip-gram模型,帮助理解将词汇映射为高维向量、捕捉语义关系的完整流程。资源…

2026/10/16 9:53:39 阅读更多 →
LeetCode 883 三维形体投影面积:用二维数组统计替代3D建模

LeetCode 883 三维形体投影面积:用二维数组统计替代3D建模

开头LeetCode 883:Projection Area of 3D Shapes,翻译过来叫“三维形体投影面积”,属于那种题目名字听着很难、实际做起来却很友好的类型。它给你一个 nn 的二维数组 grid,每个格子的数值表示这个位置上堆叠了几个 111 的立方体&a…

2026/10/16 9:53:39 阅读更多 →
文档提炼提示词实战:九个维度模板实现AI结构化摘要

文档提炼提示词实战:九个维度模板实现AI结构化摘要

1. 为什么你的文档提炼提示词总是不好用:先看清问题出在哪 我接触过不少整理资料的人,也看过大量所谓的“文档提炼提示词”,一个很普遍的现状是:模板堆了一长串,规则也写得天花乱坠,真正丢进对话窗口一测试…

2026/10/16 9:53:39 阅读更多 →

最新新闻

C#面向对象:Person类、Student类继承与构造函数全解析

C#面向对象:Person类、Student类继承与构造函数全解析

1. 面向对象的第一步:从Person类的设计说起很多人学C#敲的第一段面向对象代码,就是从定义人类Person开始的。这个题目看着简单,但背后其实藏着一堆值得掰扯清楚的细节——构造函数怎么写、字段和属性有什么区别、继承之后构造函数怎么联动。我…

2026/10/16 10:41:46 阅读更多 →
Tailwind CSS组件库v6.23:纯CSS驱动的62个可复用UI模块

Tailwind CSS组件库v6.23:纯CSS驱动的62个可复用UI模块

简介:本资源是 Tailwind CSS 6.23 版本的完整组件实践包,面向前端开发者、UI 工程师及响应式项目快速搭建者,解决传统 CSS 开发效率低、定制难、响应式适配繁琐等痛点。压缩包含 2007 个文件,主体为 1304 个 HTML 示例页&#xff…

2026/10/16 10:41:46 阅读更多 →
线性加权滑移平均精准捕捉局部小峰值的Matlab实现与调参

线性加权滑移平均精准捕捉局部小峰值的Matlab实现与调参

前阵子处理一段传感器信号时,我遇到一个特别典型的困境:数据里明明有很关键的局部小峰值,结果一用常规的滑动平均去噪,峰值幅度被削掉一大半,位置还往后偏移了好几个采样点。后来换成线性加权滑移平均算法,…

2026/10/16 10:41:46 阅读更多 →
用Niagara制作逼真火焰:噪声、颜色曲线与透明淡出全解析

用Niagara制作逼真火焰:噪声、颜色曲线与透明淡出全解析

从小我就觉得粒子特效是门“骗术”:喷泉喷的是水,火焰烧的是粒子,但只要观感对了,没人会在意那是不是真的流体。喷泉那一篇发出来后,不少人问我能不能把发射器关掉重力、换个橙色贴图,直接当火焰用。我的回…

2026/10/16 10:41:46 阅读更多 →
Utilman.exe丢失或找不到怎么办?系统自带安全修复方法全解析

Utilman.exe丢失或找不到怎么办?系统自带安全修复方法全解析

系统突然出现“Utilman.exe文件丢失或找不到”的报错,登录界面右下角的“轻松使用”按钮点了没反应,甚至开机就卡在欢迎界面。这个问题在Windows 7到Windows 11上都可能出现,不少朋友第一反应是去第三方下载站找个exe文件补上——我劝你千万打…

2026/10/16 10:41:46 阅读更多 →
AI逆向工程实战:大语言模型如何将二进制翻译为伪代码

AI逆向工程实战:大语言模型如何将二进制翻译为伪代码

这个标题是我在刷开源社区动态的时候看到的,第一反应是“又来了个套壳项目”,但点进去翻了源码和论文之后,我承认我小看它了。这个项目目前在 GitHub 上拿下了 31.2K Star,热度确实不是刷出来的。我花了两天时间把它部署到本地&am…

2026/10/16 10:40:41 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →