- StringBuilder:字符串操作的利器
处理大型字符串或频繁拼接时,StringBuilder是最佳选择。相比普通字符串拼接,它的效率更高。
var sb = new StringBuilder();
sb.Append("Hello, ");
sb.Append("world!");
string result = sb.ToString();
- TryParse:安全解析的守护者
用TryParse替代可能抛出异常的Parse,安全处理无效输入。
if (int.TryParse("123", out int number))
{
Console.WriteLine($"Parsed number: {number}");
}
else
{
Console.WriteLine("Invalid input.");
}
- nameof与枚举的协作
通过nameof获取枚举值的名称,提升代码可维护性。
enum Status { Pending, Approved, Rejected }
Console.WriteLine(nameof(Status.Approved)); // 输出 "Approved"
- Enum.TryParse:枚举解析的安全网
避免解析枚举时的异常,使用Enum.TryParse确保安全。
if (Enum.TryParse("Approved", out Status status))
{
Console.WriteLine($"Status: {status}");
}
- StringComparison:大小写比较的避坑指南
显式指定StringComparison,杜绝大小写比较的潜在bug。
if (string.Equals("hello", "HELLO", StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("Strings are equal.");
}
- String.IsNullOrWhiteSpace:空值/空字符串检测神器
一步检测null、空字符串或空白字符。
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("Input is invalid.");
}
- Stopwatch:代码性能的计时器
测量代码执行时间,优化性能瓶颈。
var stopwatch = Stopwatch.StartNew();
// Your code here
stopwatch.Stop();
Console.WriteLine($"Elapsed time: {stopwatch.ElapsedMilliseconds} ms");
- Environment.NewLine:跨平台换行的秘密武器
替代硬编码的\n
或\r\n
,实现跨平台兼容。
Console.WriteLine($"Line 1{Environment.NewLine}Line 2");
- Guid.NewGuid:生成全球唯一的ID
需要唯一标识符?Guid.NewGuid()瞬间生成。
var uniqueId = Guid.NewGuid();
Console.WriteLine($"Unique ID: {uniqueId}");
- DateTimeOffset:时区友好的时间管家
处理多时区场景时,比DateTime更可靠。
var now = DateTimeOffset.Now;
Console.WriteLine($"Current time: {now}");
- TimeSpan:时间间隔的精确计算
表示时间跨度,如小时、分钟、秒。
var duration = new TimeSpan(2, 30, 0); // 2小时30分钟
Console.WriteLine($"Duration: {duration}");
- HashSet:唯一值的集合仓库
自动去重,确保集合元素唯一。
var uniqueNumbers = new HashSet<int> { 1, 2, 3, 3 };
Console.WriteLine($"Count: {uniqueNumbers.Count}"); // 输出 3
- Dictionary:键值对的快速查找表
通过键快速访问值,提升查询效率。
var ages = new Dictionary<string, int>
{
{ "Alice", 30 },
{ "Bob", 25 }
};
Console.WriteLine($"Alice's age: {ages["Alice"]"]);
- SortedDictionary:有序键值对的排列大师
按键自动排序,方便有序遍历。
var sortedAges = new SortedDictionary<string, int>
{
{ "Bob", 25 },
{ "Alice", 30 }
};
- ConcurrentDictionary:线程安全的字典
多线程环境下安全地进行增删改查。
var concurrentAges = new ConcurrentDictionary<string, int>();
concurrentAges.TryAdd("Alice", 30);
- Queue:先进先出的消息队列
实现FIFO(先进先出)操作。
var queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
Console.WriteLine($"Dequeued: {queue.Dequeue()}"); // 输出 1
- Stack:后进先出的栈结构
适合LIFO(后进先出)场景,如撤销操作。
var stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
Console.WriteLine($"Popped: {stack.Pop()}"); // 输出 2
- BitArray:紧凑的位存储方案
高效存储布尔值,节省内存空间。
var bits = new BitArray(new[] { true, false, true });
Console.WriteLine($"Bit at index 0: {bits[0]}"); // 输出 True
- ObservableCollection:数据绑定的实时监控者
UI开发中实现数据绑定,自动响应集合变化。
var collection = new ObservableCollection<string>();
collection.CollectionChanged += (sender, e) => Console.WriteLine("Collection changed!");
collection.Add("Item 1");
- Lazy:延迟初始化的懒人福音
对象按需创建,减少资源浪费。
var lazyValue = new Lazy<int>(() => 42);
Console.WriteLine($"Lazy value: {lazyValue.Value});
- ThreadLocal:线程专属的数据容器
每个线程维护独立副本,避免数据污染。
var threadLocal = new ThreadLocal<int>(() => 42);
Console.WriteLine($"Thread-local value: {threadLocal.Value});
- SemaphoreSlim:资源调度的交通灯
控制并发访问数量,防止资源过载。
var semaphore = new SemaphoreSlim(2); // 允许2个并发访问
await semaphore.WaitAsync();
// 访问资源
semaphore.Release();
- CancellationTokenSource:任务取消的总指挥
优雅终止耗时任务,避免资源泄漏。
var cts = new CancellationTokenSource();
var task = Task.Run(() =>
{
while (!cts.Token.IsCancellationRequested)
{
// Do work
}
}, cts.Token);
cts.Cancel();
- Task.Delay:异步世界的暂停键
在异步代码中引入延迟,模拟耗时操作。
await Task.Delay(1000); // 模拟1秒延迟
- Task.FromResult:立即返回的占位符
快速创建已完成的Task,简化结果返回。
var task = Task.FromResult(42);
Console.WriteLine($"Result: {task.Result});
- Task.Run:CPU密集型任务的卸货码头
将耗时计算转移到后台线程。
await Task.Run(() =>
{
// CPU-bound work
});
- Task.WhenAll:多任务协作的指挥官
等待多个任务全部完成,再继续执行。
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
- Task.WhenAny:抢占先机的竞争者
处理第一个完成的Task,提升响应速度。
var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
var completedTask = await Task.WhenAny(tasks);
- Parallel.ForEach:并行处理的流水线
对集合进行并行遍历,提升处理速度。
Parallel.ForEach(Enumerable.Range(1, 10), i =>
{
Console.WriteLine($"Processing {i}");
});
- Parallel.Invoke:多线程执行的启动器
同时执行多个独立操作。
Parallel.Invoke(
() => Console.WriteLine("Action 1"),
() => Console.WriteLine("Action 2")
);
- Interlocked:线程安全的原子操作
确保计数器等共享变量的原子性。
int counter = 0;
Interlocked.Increment(ref counter);
- MemoryCache:内存中的高速缓存
缓存常用数据,减少数据库/文件访问。
var cache = new MemoryCache(new MemoryCacheOptions());
cache.Set("key", "value");
var value = cache.Get("key");
- ConcurrentBag:线程安全的杂货铺
高并发场景下的无序集合。
var bag = new ConcurrentBag<int>();
bag.Add(42);
bag.TryTake(out int result);
- BlockingCollection:生产者-消费者模式的纽带
阻塞式集合,简化生产消费流程。
var collection = new BlockingCollection<int>();
collection.Add(42);
var item = collection.Take();
- Channel:异步数据管道
在任务间传递数据,实现解耦通信。
var channel = Channel.CreateUnbounded<int>();
await channel.Writer.WriteAsync(42);
var item = await channel.Reader.ReadAsync();
- DataAnnotations:模型验证的标注神器
通过属性标注实现自动验证。
public class Person
{
[Required]
public string Name { get; set; }
}
- Regex:正则表达式的瑞士军刀
强大的字符串匹配工具。
var regex = new Regex(@"\d+");
var match = regex.Match("123");
Console.WriteLine($"Match: {match.Value}");
- JsonSerializer:JSON序列化的快捷方式
轻松实现对象与JSON的相互转换。
var person = new Person { Name = "Alice" };
var json = JsonSerializer.Serialize(person);
var deserialized = JsonSerializer.Deserialize<Person>(json);
- XmlSerializer:XML处理的传统艺能
适用于XML序列化的经典方案。
var serializer = new XmlSerializer(typeof(Person));
using var writer = new StringWriter();
serializer.Serialize(writer, person);
- FileStream:文件操作的底层通道
直接操作文件流,处理二进制数据。
using var stream = new FileStream("file.txt", FileMode.Open);
// Read or write to the file
- StreamReader/StreamWriter:文本文件的读写助手
简化文本文件的读取与写入。
using var reader = new StreamReader("file.txt");
var content = reader.ReadToEnd();
- Path:文件路径的魔术师
处理文件路径的拼接与分割。
var fullPath = Path.Combine("folder", "file.txt");
Console.WriteLine($"Full path: {fullPath}");
- Directory:目录管理的指挥官
批量处理文件夹与文件。
var files = Directory.GetFiles("folder");
- FileSystemWatcher:文件系统监控员
实时监听文件变化事件。
var watcher = new FileSystemWatcher("folder");
watcher.Created += (sender, e) => Console.WriteLine($"File created: {e.Name}");
watcher.EnableRaisingEvents = true;
- HttpClient:HTTP请求的王者
发起GET/POST等HTTP请求,处理Web服务。
var client = new HttpClient();
var response = await client.GetAsync("https://example.com");
- WebSocket:实时通讯的桥梁
建立持久连接,实现双向实时通信。
var websocket = new ClientWebSocket();
await websocket.ConnectAsync(new Uri("wss://example.com"), CancellationToken.None);
- Socket:网络通信的底层接口
基于TCP/IP的低级网络操作。
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("example.com", 80);
- Process:外部程序的执行者
启动和管理系统进程。
var process = new Process
{
StartInfo = new ProcessStartInfo("notepad.exe")
};
process.Start();
- Environment:系统信息的百宝箱
获取操作系统、硬件等环境信息。
Console.WriteLine($"OS Version: {Environment.OSVersion});
- AppDomain:应用程序域的管理员
创建和管理独立的应用程序域。
var domain = AppDomain.CreateDomain("NewDomain");
domain.ExecuteAssembly("app.exe");