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!
    这里贴出图片,简易介绍代码执行流程
   


       2.结合缓存封装使用

      
       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;
            }
        }

 

  

 

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

猜你喜欢

转载自www.cnblogs.com/lihuanancn/p/8931192.html