← 返回笔记列表

C# 日常开发小技巧整理

C#2026-06-03

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 舒服多了。这个以后单独写一篇。

这篇会持续更新,遇到顺手的小技巧就补一条进来。