这张路线适合谁
适合已经会用至少一门后端语言的人——会 Java 最顺(类型系统、泛型、异常都能直接映射),会 TS/Go/Python 也行,本文系列反复用你已会的概念对照。完全零基础的先别走这条:变量、循环、函数这些底子任何语言教程都能补。
版本现状:现在入坑学的是什么
学 C# 就是学 .NET,当前主线是 .NET 10(LTS,支持到 2028 年 11 月),语言版本 C# 14。.NET 每年 11 月发新版、偶数号是 LTS,这个节奏意味着:跟教程不必追新——钉住 LTS 线,教程差一两个版本不影响学。唯一要躲的坑是 .NET Framework 4.x 的老教程,那是不再演进的 Windows 专有实现,语法像但生态完全不同。
总览表
| 阶段 | 目标 | 阶段产出 | 预估时长(每天 1-2 小时) |
|---|---|---|---|
| 一、环境与工具链 | SDK、CLI、IDE 三件事就绪 | 新工程从零到 dotnet run 全绿 | 2-3 天 |
| 二、第一个应用 | 跑通入口、参数、发布 | 一个词频统计 CLI,单文件发布可分发 | 3-5 天 |
| 三、语法内核 | 六大件:属性/可空/LINQ/record/异步/DI | 把 CLI 重构成多文件工程并加上单元测试 | 2-3 周 |
| 四、Web 服务实战 | Minimal API + EF Core + 缓存 + 后台任务 | 可压测的短链服务,与 Go 版同场对比 | 1-2 周 |
| 五、进阶方向 | 选一条深水区路线 | 按方向定(见该节) | 持续 |
阶段一:环境与工具链
学什么:.NET SDK 安装与版本现状(LTS/STS 节奏)、dotnet CLI 的十来个高频命令、.csproj/.sln/global.json 三者的分工、NuGet 依赖与 restore 机制、IDE 三选一(Rider / Visual Studio 2026 / VS Code + C# Dev Kit)。
用什么资源:《C# 与 .NET 环境搭建与工具链》一篇全覆盖,按它的检查清单验收。Java 背景对照《Java 环境搭建与工具链》读,SDKMAN 与 global.json 都是”锁版本”的答案。
阶段产出与验收:新目录里 dotnet new console → dotnet run → dotnet publish 三连全绿;dotnet –list-sdks 能看到 10.0 一行。
常见卡点:装完 dotnet 命令找不到(PATH 未刷新,重开终端);VS Code 里 F5 没反应(C# Dev Kit 需登录微软账号)。
阶段二:第一个应用
学什么:顶级语句与 Main 的关系(编译器替你写了入口)、args 解析、退出码约定、异步文件 IO、dotnet publish 的三种产物口径(框架依赖/自包含单文件/Native AOT)。
用什么资源:《第一个 C# 应用》,一个词频统计 CLI 从零到分发。Java 侧对照《第一个 Java 程序》——入口进化史两边互为镜像。
阶段产出与验收:CLI 能处理参数错误(退出码非零)、能统计任意文本文件、自包含单文件发布后在一台没装 .NET 的机器上跑通。
常见卡点:CS8805(顶级语句与显式 Main 共存,删一个);dotnet run — 后面的参数才传给程序。
阶段三:语法内核
学什么:属性与字段、可空引用类型(编译期防空的边界)、LINQ 方法语法与延迟执行、record 与模式匹配、async/await 与 Task(和 JS 的语义差异、.Result 死锁)、内建依赖注入的三档生命周期。
用什么资源:概念篇《C# 语法要点》逐个带 Java/TS 对照表;速查靠《C# 基础知识参考字典》(报错码那张表建议收藏)。record 的 Java 侧背景看《Java 类与 Record》。
阶段产出与验收:把阶段二的 CLI 拆成多个文件——参数解析、统计逻辑、输出格式各一类,用 xUnit 给统计逻辑补测试;全程 nullable 警告清零。
常见卡点:LINQ 查了两次(忘了延迟执行,ToList 固化);异步链里混进 .Result 卡死(全链路 async)。
阶段四:Web 服务实战
学什么:Minimal API 端点与 DI 组装、EF Core 建模与唯一索引、缓存三件套(穿透/击穿/雪崩)、Channel + BackgroundService 后台任务、wrk 压测与 P99 口径。
用什么资源:《用 ASP.NET Core 重写短链服务》——与站内 Go 版短链同题同指标,跨语言对照着读收益最大。Spring 背景再对照《Spring Boot 框架入门》,两者心智模型同构。
阶段产出与验收:短链服务本机跑通,curl 创建与 302 跳转全链路 OK;wrk 压缓存命中路径,能解释 P99 曲线的每一段。
常见卡点:唯一索引冲突重试忘了 ChangeTracker.Clear(重复追踪报错);BackgroundService 里直接用注入的 DbContext(没有请求作用域,要用 IServiceScopeFactory 自建)。
阶段五:进阶方向
实战之后别急着横向铺,选一条深水区:
| 方向 | 深入什么 | 先做出什么 |
|---|---|---|
| Web 服务深化 | EF Core 迁移与性能、认证授权(JWT/OIDC)、可观测性(OpenTelemetry)、配置与健康检查 | 给短链服务加用户体系与结构化日志 |
| 云原生与容器 | 容器镜像多阶段构建、Native AOT 的适用边界、性能诊断(dotnet-counters/dotnet-trace) | 把短链服务容器化并做一次 CPU 火焰图 |
| 跨端与游戏 | Unity(游戏,C# 是一等公民但运行时与版本由 Unity 锁定)或 MAUI(跨平台桌面/移动客户端) | 各做一个小 demo 再决定投入 |
生态一句话分叉:Unity 与 MAUI 写的也是 C#,但那是另外的世界——Unity 用自家运行时与版本节奏,服务端学到的 ASP.NET Core 知识几乎不迁移;想写游戏随时可以去,但别当成服务端路线的一部分。
避坑清单
- 不要拿 .NET Framework 4.x 的教程学——搜索结果里一半的老答案是它,判断特征:出现 web.config、ASP.NET MVC 5、System.Web;代价是学的 API 在 .NET 10 上根本不存在
- 不要关掉 nullable 警告图清净——CS86xx 警告是编译期白送的防线,压制一次就少一类生产事故;边界数据另配运行时校验
- 不要在异步代码里用 .Result/.Wait()——死锁或线程饥饿二选一;从入口到底层全链路 async 是纪律
- 不要跳过 LINQ 直接手写循环然后嘲笑”语法糖”——LINQ 是 C# 生态的通用货币,第三方 API、EF Core 查询全是它的形状,不熟它读不了别人的代码
- 不要一次学完整个 Microsoft.Extensions.* 全家桶——DI、配置、日志、选项、宿主逐个上,每个都能独立解释清楚再用下一个
学完之后
这条线走完,你已经具备用 C# 独立交付一个中小型 Web 服务的能力。下一步两条路:往深走(阶段五第一、二方向);往宽走(同一套后端思维换语言,本站其他语言路线任选)。C# 系列的完整索引:环境、第一个应用、语法、字典、实战五篇加本路线,从任何一篇进来都能串起来。
版本核实(以官方文档为准):.NET 10 为当前 LTS(支持至 2028-11),C# 14 随之发布;Visual Studio 2026 与 Rider、C# Dev Kit 的可用性见环境篇核实说明;.NET Framework 4.x 停止特性演进、不属于本路线。文中内链均为站内已发布或本系列已排期文章。具体以官方文档为准。