static Func<T, R> Cache<T, R>(Func<T, R> func)
{
var mem = new Dictionary<T, R>();
return x =>
{
if (!mem.ContainsKey(x))
{
Console.WriteLine("未缓存,正在缓存!");
mem[x] = func(x);
}
return mem[x];
};
}
大致就是给进去一个T,然后吐出来一个R。
run下看看:
#region 利用字典来实现对函数的缓存
var cacheFunc = Cache<int, int>(DoSomeTing);
Console.WriteLine(cacheFunc(10));
Console.WriteLine(cacheFunc(5));
Console.WriteLine(cacheFunc(10));
Console.ReadKey();
#endregion
其中,DoSomeThing是可以是一个读取数据库的操作,复杂的计算操作等等,在这里,只写了个简单的意思下:
static int DoSomeTing(int a)
{
return a * a;
}
---------------------
作者:水田如雅
来源:CSDN
原文:https://blog.csdn.net/lhc1105/article/details/45727115
版权声明:本文为博主原创文章,转载请附上博文链接!