C# 日常开发小技巧整理
1. 字符串拼接
循环里拼字符串一定用 StringBuilder,别用 +,量大了性能差一个数量级。
少量拼接用内插字符串最清爽:
var msg = $"处理完成,共 {count} 个图元,耗时 {elapsed:F1} 秒";
2. 集合去重与查找
HashSet<T> 的 Contains 是 O(1),列表是 O(n)。
需要反复判断「有没有」的场景,先转 HashSet:
var idSet = new HashSet(targetIds);
var hit = allElements.Where(e => idSet.Contains(e.Id)).ToList();
3. 异步别混用 async/void
事件处理器以外的地方 async void 会让异常直接把进程搞崩,
一律 async Task,调用方再决定要不要等待:
// ❌ async void DoWorkAsync() { ... }
// ✅
async Task DoWorkAsync()
{
await Task.Run(() => HeavyCalc());
}
4. 空值判断
C# 6 之后大量场景可以一行搞定:
view?.SetTitle("新标题"); // 空条件调用
var name = person?.Name ?? "未命名"; // 空合并
if (obj is MyType t) { /* 模式匹配 */ }
5. 配置文件读取
桌面小工具不值得上 app.config 的 ConfigurationManager,直接一个 JSON 文件 + System.Text.Json:
结构清晰,还能手改,比 XML 舒服多了。这个以后单独写一篇。
这篇会持续更新,遇到顺手的小技巧就补一条进来。