首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C#开发者必知的100个黑科技(后50)!从主构造函数到源生成器全面掌握

C#开发者必知的100个黑科技(后50)!从主构造函数到源生成器全面掌握

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

如果你喜欢我的文章,请给我一个赞!谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档