C# 开发必备的 10 个实用小技巧

目录

1️⃣ using var 自动释放资源(C# 8+)

2️⃣ 空合并运算符 ?? 与 ??=

3️⃣ 空条件运算符 ?. 与 ?[]

4️⃣ 字符串插值 $""

5️⃣ 模式匹配 switch

6️⃣ 表达式体成员

7️⃣ 解构赋值

8️⃣ Span 高性能切片

9️⃣ LINQ 让集合操作更优雅

🔟 record 定义不可变对象(C# 9+)


在日常开发中,很多小技巧可以让我们的 C# 代码更优雅、更高效
今天整理了 10 个高频使用的小技巧,掌握后能大幅提升写代码的体验。


1️⃣ using var 自动释放资源(C# 8+)

在处理 StreamSqlConnection 等需要释放的对象时,可以用 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#,这些技巧能让你的代码更加 简洁、优雅、易维护

引入地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值