1.简单介绍Fun

C#中Fun和Action有点类似,都是一个委托方法,不同的是Func是有返回值的,而Action没有。

(T)此委托封装的方法的参数类型。

备注:详情了解Fun到(https://www.cnblogs.com/LipeiNet/p/4694225.html

  2.简单例子介绍
        这面全局定义了一个字典,封装一个方法定义两个参数为string类型,一个委托。假设调用方法传入一个key,如果存在字典返回一个Value,如果不存则通过委托返回key!
    这里贴出图片,简易介绍代码执行流程
   

  3.结合缓存封装使用

      
       1).获取数据

        /// <summary>
/// 获取数据
/// </summary>
public void GetConfigsValue()
{
var key = "SysKeyInfo";
var keyDic = GetDataLocalCache<string>(key, () =>
{ using (EntityContext db = new EntityContext())
{
var value = db.Configs.FirstOrDefault(o => o.Name == "SysKeyInfo").Value;
return value;
} }, DateTime.Now.AddHours(2));
}

  

2).获取缓存

  /// <summary>
/// 获取缓存数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key">缓存key</param>
/// <param name="callBack">委托方法名</param>
/// <param name="timeout">缓存过期时间</param>
/// <returns></returns>
public static T GetDataLocalCache<T>(string key, Func<T> callBack, DateTime? timeout = null)
{
if (!timeout.HasValue) timeout = DateTime.Now.AddMinutes(5);
var cache = HttpRuntime.Cache[key];
//如果缓存不存在或者过期则执行委托方法
if (cache == null)
{
var result = callBack();
if (result != null)
//将委托方法执行结果存入缓存中
HttpRuntime.Cache.Insert(key, result, null, timeout.GetValueOrDefault(), System.Web.Caching.Cache.NoSlidingExpiration);
return result;
}
else
{
return (T)cache;
}
}

  

       4.总结
       从Func的委托中,我们可以看出,它简化了我们自己定义委托带来的繁琐,同时它更好的结合了Lamdba的使用。减少了自定义函数的作用。同时也是有缺点的,就是错误的出现不容易发现是那里。Action委托的使用与Func雷同,这里就不在说了。希望自己的总结可以对大家有所帮助。
   
打个广告:       晨风电影    https://www.chenfengdy.top/

最新文章

  1. (转载)TCP/IP的三次握手与四次挥手
  2. 【转】BAT 延迟变量
  3. Webservice 调用方式整理
  4. WPF学习笔记-TextBox光标位置如何放到最后?
  5. OD: Exploit Me - Inject Instruction
  6. php 父类子类构造函数注意事项
  7. 移动端 new CustomEvent(&#39;input&#39;) 兼容问题
  8. C语言中结构体定义实际上相当于变量入栈
  9. UX2内核浏览加速技术纲要
  10. CodeForces - 1013B And 与运算暴力
  11. pycharm激活方式
  12. Imbalanced Array CodeForces - 817D (思维+单调栈)
  13. wb 黑名单批量操作
  14. 给linux服务器添加一块新的磁盘
  15. Redis 分布式缓存 Java 框架
  16. veterbi
  17. Trailing Zeroes (III) (二分)题解
  18. bzoj千题计划115:bzoj1024: [SCOI2009]生日快乐
  19. 【php】提交的特殊字符会被自动转义
  20. Flask之数据库操作

热门文章

  1. PHP类的自动加载
  2. NHibernate优点和缺点:
  3. 记java应用linux服务单个CPU使用率100%分析
  4. spring mvc跨域(post)--filter方案
  5. TreeMap就这么简单【源码剖析】
  6. Java:import com.sun.awt.AWTUtilities;报错
  7. hdu1789 Doing Homework again---(经典贪心)
  8. [论文阅读] A Discriminative Feature Learning Approach for Deep Face Recognition (Center Loss)
  9. jacascript 立即执行函数(IIFE)与闭包
  10. 关于MySQL Online DDL