我希望能够以某种方式标记一个函数(属性可能?),这样当从任何地方调用它时,其他一些代码会处理参数并返回一个值而不是被调用的函数,或者可以让函数正常执行。
我会用它来轻松缓存。
例如,如果我有一个名为Add10的函数,它将如下所示:
int Add10 (int n)
{
return n + 10;
}
如果使用相同的值(Add10(7))重复调用该函数,它将始终给出相同的结果(17),因此每次重新计算都没有意义。当然,我不会用这么简单的功能来做,但我相信你能理解我的意思。
C#是否提供了我想要的任何方式? 我需要一种方法将函数标记为缓存,以便当有人执行Add10(16)某些代码首先运行以检查字典时,我们已经知道Add10值为16并返回它,如果我们这样做,计算,存储和如果我们不回来。
答案 0 :(得分:3)
答案 1 :(得分:0)
而不是功能,我会公开Func<>
委托:
Func<int, int> add10 = (n) =>
{
// do some other work
...
int result = Add10(n); // calling actual function
// do some more perhaps even change result
...
return result;
};
然后:
int res = add10(5); // invoking the delegate rather than calling function
答案 2 :(得分:0)
就像杰森提到的那样,你可能想要像功能记忆这样的东西。
关于它的另一个SO线程: Whose responsibility is it to cache / memoize function results?
您还可以使用与面向方面编程相关的原则来实现此类功能。
答案 3 :(得分:0)
MbCache可能就是你要找的东西。