用 AI 辅助学习 .NET / C# 的一些心得
最近一年,我学 C# 的方式发生了很大变化:遇到不懂的概念,第一反应不再是翻教程,而是先问 AI。用了大半年,确实感受到它把学习曲线拉平了很多,但也不是没有坑。这篇笔记把 AI 在 .NET 学习上实际帮到我的地方、以及它不靠谱的时候都整理一下。
一、AI 真正帮上忙的几个场景
1. 解释抽象概念。比如刚学依赖注入的时候,我一直不理解"为什么要把对象交给容器管理"。让 AI 用生活化的例子解释了一遍,再让它对比"手写 new"和"注入"的区别,一下就通了。AI 特别适合这种"你说不出具体哪里不懂,但就是绕不过来"的概念。
2. 写示例代码。想学一个新 API,比如 Span<T>、IAsyncEnumerable,直接让 AI 给一个最小可运行示例,比自己在搜索引擎里翻一堆博客快得多。而且它会自动带上 using 和 Main 入口,复制就能跑。
3. 排查报错。编译器报错信息又长又难懂的时候,把整段错误贴给 AI,它通常能指出真正的问题。比如 EF Core 迁移报错,经常是 Design 包没装,AI 一眼就能看出来。
二、AI 给出的 C# 代码示例
比如我问它"怎么用 BackgroundService 写一个定时任务",它给出的示例:
public class TimedHostedService : BackgroundService
{
private readonly ILogger<TimedHostedService> _logger;
public TimedHostedService(ILogger<TimedHostedService> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using var timer = new PeriodicTimer(TimeSpan.FromSeconds(30));
while (await timer.WaitForNextTickAsync(stoppingToken))
{
_logger.LogInformation("定时任务执行于: {time}", DateTimeOffset.Now);
}
}
}
这段代码基本能直接用,比我自己翻文档快多了。但我还是去翻了官方文档确认 PeriodicTimer 是 .NET 6 之后才有的,避免它给我过时写法。
三、要警惕的几个坑
- API 版本幻觉:AI 可能给出 .NET 5 甚至更早的写法,而你用的是 .NET 8。遇到不认识的 API,一定要去微软官方文档确认版本。
- 把不安全的代码当真:比如它可能建议用
.Result或.Wait(),这在异步上下文里容易死锁。学过之后要有判断力。 - 过度依赖会失去调试能力:如果每次报错都直接让 AI 改,自己不会看堆栈,成长会很慢。我的做法是先自己读报错、猜原因,实在搞不定再问。
- 代码风格要对齐项目:AI 默认风格不一定符合你团队的规范,生成的代码要自己 review。
四、我的使用方式
现在我一般是这样:先自己写,卡住了把问题描述清楚丢给 AI,让它解释而不是直接给最终代码;它给的示例我会改一改再用,并且跑一遍确认;遇到新概念,让它从"是什么、为什么、什么时候用、踩什么坑"四个角度讲一遍。这样下来,学习效率比以前纯靠搜索引擎高很多,但基础概念还是得靠自己理解。
总结一句:AI 是个很好的"24 小时不烦人的家教",但它不能替你消化知识。把它当老师,不要当代写。