zoukankan      html  css  js  c++  java
  • 《 .NET并发编程实战》实战习题集

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

    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的类型。

  • 相关阅读:
    2月24日-寒假进度24
    2月23日-寒假学习进度23
    2月22日-寒假学习进度22
    2月21日-寒假学习进度21
    第一周冲刺意见汇总
    团队绩效评估
    团队工作第七天
    团队工作第六天
    团队工作第五天
    团队工作第四天
  • 原文地址:https://www.cnblogs.com/adalovelacer/p/book-concurrency-in-dot-net-chinese-version-practice-4.html
Copyright © 2011-2022 走看看