代码改变世界

《 .NET并发编程实战》实战习题集 - 如何重用一次性资源

  叶伟民  阅读(170)  评论(0编辑  收藏  举报

如何重用以下一次性资源代码呢?

复制代码
1 string text;
2 
3 using (var stream = new StreamReader(path))
4 
5 {
6 
7     text = stream.ReadToEnd();
8 
9 }
复制代码

 

这时以传统的OOP风格来重构代码并不是一件容易的事。是可以使用模板方法模式来解决这个问题,但是该解决方案还会带来更多的复杂性,因为它需要新的基类和每个派生类的实现。更好、更优雅的解决方案是函数式编程, 即使用lambda表达式(匿名委托)。以下是实现静态辅助方法及其用法的代码:

R Using<T,R>(this T item, Func<T, R> func) where T : IDisposable { using (item)

return func(item);

string text = new StreamReader(path).Using(stream => stream.ReadToEnd());

 

以上代码实现了一种灵活且可重用的模式,以用于清理一次性资源。这里唯一的约束就是泛型类型T必须是实现IDisposable的类型。

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示