浏览知识库目录

C#

C# 完整学习路线

面向已有编程基础读者的 C# 14 与 .NET 10 完整路线,以 StudyTasks 命令行任务管理器贯穿语言、基础类库与工程实践。

C# 完整学习路线

这是一套面向已有编程基础读者的 C# 学习笔记。主线环境采用 C# 14、.NET SDK 10.0.302 与 .NET 10.0.10 LTS,并通过同一个 StudyTasks 命令行任务管理器,把语言特性、基础类库和工程实践连接成一个可以构建、测试、打包和发布的项目。

你不需要重新学习“什么是变量或循环”。本系列更关注静态类型、值与引用语义、可空性、资源所有权、LINQ 的惰性、异步取消,以及怎样把一个控制台程序逐步整理成边界清晰、可维护的软件。


一、学习目标

  • 确认本系列的 SDK、语言版本、目标框架与跨平台边界
  • 理解 18 篇笔记如何围绕同一个项目逐步推进
  • 建立每个阶段都能构建、测试和复盘的学习节奏
  • 明确完成系列后应具备的独立交付能力

二、环境基线

  • 语言版本:C# 14
  • SDK:.NET SDK 10.0.302
  • 运行时:.NET 10.0.10 LTS
  • 目标框架:net10.0
  • 支持系统:Windows PowerShell、Linux、macOS
  • 解决方案格式:StudyTasks.slnx
  • 质量工具:编译器分析器、dotnet format、xUnit v3
  • 示例命令:study-tasks

先确认环境:

dotnet --version
dotnet --info
dotnet --list-sdks
dotnet --list-runtimes

dotnet --version 显示当前目录实际选中的 SDK,而不是机器上“最新安装”的 SDK。存在 global.json 时,SDK 选择还会受到版本和回滚策略影响。

本系列只使用正式发布的 C# 14 与 .NET 10 API。不要把 .NET 11 Preview 示例复制到 net10.0 项目后再依赖偶然的本机环境。


三、课程目录

阶段 文档 完成后能做什么
建立基线 1-环境、SDK 与项目基线 创建解决方案并理解 SDK、运行时和目标框架
类型模型 2-语法、类型系统与内存语义 判断值复制、引用共享、装箱与可空值
数据组织 3-集合、泛型与常用数据结构 按业务语义选择集合并设计泛型约束
行为组织 4-控制流、方法与参数设计 编写契约清晰、易测试的方法
项目拆分 5-项目、程序集、命名空间与依赖 建立项目引用和单向依赖
对象建模 6-类、接口、记录与对象建模 用类、接口与记录保护领域不变量
可靠性 7-可空引用、异常与资源安全 明确失败语义并可靠释放资源
行为组合 8-委托、事件、Lambda 与扩展成员 组合回调、通知与扩展 API
查询管道 9-LINQ、迭代器与惰性查询 构建可控的惰性数据转换
基础类库 10-文件、JSON、正则与时间 安全处理路径、文本、结构化数据和时间
应用入口 11-命令行、配置、依赖注入与日志 组装可配置、可诊断的 CLI
数据持久化 12-SQLite、事务与数据访问 使用参数、约束和事务实现仓储
网络边界 13-HTTP、JSON 与 API 客户端 编写带超时、取消和验证的客户端
并发 14-异步、并发与取消 正确传播异步、取消和并发错误
质量保障 15-测试、调试与代码质量 建立自动化质量反馈
交付 16-NuGet、发布与部署 打包工具并生成可部署产物
综合实践 17-综合实战与进阶路线 独立完成可维护的 .NET CLI 项目

四、贯穿项目

项目名是 StudyTasks,安装后的命令是 study-tasks。能力按课程逐步增长:

  1. 在内存集合中新增、筛选和完成任务。
  2. record、枚举和接口表达任务与仓储。
  3. 通过 JSON 导入导出,再迁移到 SQLite。
  4. 加入 addlistdonedeletesync 子命令。
  5. 用 Generic Host 统一配置、依赖注入、日志和生命周期。
  6. HttpClient 同步远端任务,并传播超时和取消。
  7. 为领域和基础设施补测试,通过分析器与格式检查。
  8. 构建 NuGet Tool 与跨平台发布产物。

最终结构:

StudyTasks/
  StudyTasks.slnx
  Directory.Build.props
  src/
    StudyTasks.Core/
    StudyTasks.Infrastructure/
    StudyTasks.Cli/
  tests/
    StudyTasks.Tests/

依赖始终由 CliInfrastructure 指向 CoreCore 不引用数据库、HTTP、日志或命令行框架。入口项目负责组装,基础设施项目负责外部 I/O。


五、推荐学习方法

每篇都按“读目标 → 手写示例 → 制造失败 → 完成练习 → 重跑构建和测试”的节奏实践。警告应查清原因,不用 ! 掩盖;异步失败还要确认 CancellationToken 是否传到了最底层 I/O。


六、阶段完成标准

  • 第 1~5 篇:解释类型、参数、SDK、项目和程序集边界。
  • 第 6~10 篇:用对象模型、异常、LINQ 和基础类库实现可靠领域。
  • 第 11~16 篇:组装 CLI、SQLite、HTTP、异步、测试与发布流程。
  • 第 17 篇:在干净环境完成构建、安装、冒烟和回滚准备。

七、常用命令速查

dotnet --info
dotnet restore
dotnet build --no-restore --warnaserror
dotnet test --no-build
dotnet format --verify-no-changes
dotnet pack -c Release
dotnet publish src/StudyTasks.Cli -c Release

八、常见错误

  • 只看语法而不运行贯穿项目,导致知识点彼此割裂
  • 用机器上最新 SDK 代替 global.json 约定的 SDK
  • 为消除警告滥用 !,掩盖真实的空值与所有权问题
  • 一开始就加入 UI 或 Web 框架,模糊本系列的 CLI 工程边界

九、练习与自测

  1. 用自己的话解释 SDK、Runtime、C# 版本和目标框架的关系。
  2. 画出四个项目的引用方向,并说明 Core 为什么不引用 Infrastructure。
  3. 为每个学习阶段写出一个可运行、可验证的完成标准。

十、官方资料

第三方文章、旧版 Visual Studio 模板和当前 SDK 行为不一致时,以目标版本官方文档、项目文件与实际编译结果为准。

下一篇:环境、SDK 与项目基线