摘要:string? name = null;Console.WriteLine(name ?? "默认值"); // 默认值name ??= "初始化";Console.WriteLine(name); // 初始化
在日常开发中,很多小技巧可以让我们的 C# 代码更优雅、更高效。
今天整理了 10 个高频使用的小技巧,掌握后能大幅提升写代码的体验。
在处理Stream、SqlConnection等需要释放的对象时,可以用using var简化代码:using var reader = new StreamReader("data.txt");Console.WriteLine(reader.ReadToEnd);
不需要写额外的大括号,作用域结束时会自动释放。
给变量设置默认值时特别好用:
string? name = null;Console.WriteLine(name ?? "默认值"); // 默认值
name ??= "初始化";
Console.WriteLine(name); // 初始化避免频繁的判断:string? input = null;
Console.WriteLine(input?.Length); // null,不抛异常
int? arr = null;
Console.WriteLine(arr?[0]); // null比string.Format更直观:int age = 25;
string name = "Tom";
Console.WriteLine($"姓名: {name}, 年龄: {age}");
让分支逻辑更清晰:
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;
}
减少样板代码,写法更简洁:
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
避免不必要的数组或字符串复制:
var data = "Hello World".AsSpan;var slice = data.Slice(0, 5);
Console.WriteLine(slice.ToString); // Hello
一行代码搞定筛选与投影:
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轻松定义数据对象,带自动生成的和比较逻辑: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#,这些技巧能让你的代码更加 简洁、优雅、易维护。
·············· END ··············
来源:opendotnet