目录
在日常开发中,很多小技巧可以让我们的 C# 代码更优雅、更高效。
今天整理了 10 个高频使用的小技巧,掌握后能大幅提升写代码的体验。
1️⃣ using var 自动释放资源(C# 8+)
在处理 Stream、SqlConnection 等需要释放的对象时,可以用 using var 简化代码:
using var reader = new StreamReader("data.txt");
Console.WriteLine(reader.ReadToEnd());
👉 不需要写额外的大括号,作用域结束时会自动释放。
2️⃣ 空合并运算符 ?? 与 ??=
给变量设置默认值时特别好用:
string? name = null;
Console.WriteLine(name ?? "默认值"); // 默认值
name ??= "初始化";
Console.WriteLine(name); // 初始化
3️⃣ 空条件运算符 ?. 与 ?[]
避免频繁的 if (obj != null) 判断:
string? input = null;
Console.WriteLine(input?.Length); // null,不抛异常
int[]? arr = null;
Console.WriteLine(arr?[0]); // null
4️⃣ 字符串插值 $""
比 string.Format 更直观:
int age = 25;
string name = "Tom";
Console.WriteLine($"姓名: {name}, 年龄: {age}");
5️⃣ 模式匹配 switch
让分支逻辑更清晰:
object obj = 123;
switch (obj)
{
case int i when i > 100:
Console.WriteLine($"大数字: {i}");
break;
case string s:
Console.WriteLine($"字符串: {s}");
break;
default:
Console.WriteLine("其他类型");
break;
}
6️⃣ 表达式体成员
减少样板代码,写法更简洁:
class User
{
public string Name { get; }
public User(string name) => Name = name;
public override string ToString() => $"Net分享: {Name}";
}
7️⃣ 解构赋值
快速拆解元组或对象:
(string name, int age) user = ("Alice", 20);
var (n, a) = user;
Console.WriteLine($"{n} - {a}"); // Alice - 20
8️⃣ Span 高性能切片
避免不必要的数组或字符串复制:
var data = "Hello World".AsSpan();
var slice = data.Slice(0, 5);
Console.WriteLine(slice.ToString()); // Hello
9️⃣ LINQ 让集合操作更优雅
一行代码搞定筛选与投影:
var numbers = new[] { 1, 2, 3, 4, 5 };
var result = numbers.Where(n => n % 2 == 0).Select(n => n * n);
Console.WriteLine(string.Join(",", result)); // 4,16
🔟 record 定义不可变对象(C# 9+)
轻松定义数据对象,带自动生成的 ToString 和比较逻辑:
public record Person(string Name, int Age);
var p1 = new Person("Tom", 25);
var p2 = p1 with { Age = 30 };
Console.WriteLine(p1); // Person { Name = Tom, Age = 25 }
Console.WriteLine(p2); // Person { Name = Tom, Age = 30 }
如果你经常写 C#,这些技巧能让你的代码更加 简洁、优雅、易维护。

481

被折叠的 条评论
为什么被折叠?



