C#中Fun简单介绍及运用到项目中与缓存(本地缓存,Redis)结合使用

 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/  
   

 

转载于:https://www.cnblogs.com/lihuanancn/p/8931192.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值