C# 在执行被调用函数之前执行代码
我希望能够以某种方式标记一个函数(可能是属性?),这样当从任何地方调用它时,其他一些代码可以处理参数并返回一个值,而不是调用的函数,或者可以让函数正常执行 我会使用它来轻松缓存 例如,如果我有一个名为Add10的函数,它会如下所示:C# 在执行被调用函数之前执行代码,c#,C#,我希望能够以某种方式标记一个函数(可能是属性?),这样当从任何地方调用它时,其他一些代码可以处理参数并返回一个值,而不是调用的函数,或者可以让函数正常执行 我会使用它来轻松缓存 例如,如果我有一个名为Add10的函数,它会如下所示: int Add10 (int n) { return n + 10; } 如果函数使用相同的值(Add10(7))重复调用,它将始终给出相同的结果(17),因此每次重新计算没有意义。当然,我不会用这么简单的函数来做,但我相信你能理解我的意思 C#提供了我想
int Add10 (int n)
{
return n + 10;
}
如果函数使用相同的值(Add10(7))重复调用,它将始终给出相同的结果(17),因此每次重新计算没有意义。当然,我不会用这么简单的函数来做,但我相信你能理解我的意思
C#提供了我想要的方法吗?
我需要一种方法将一个函数标记为缓存,这样当有人添加10(16)时,首先在某个地方运行一些代码来检查字典,我们是否已经知道16的Add10值,如果知道,则返回它,如果不知道,则计算、存储并返回。您想记忆该函数吗。这里有一个方法:
而不是函数,然后我将公开一个
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;
};
就像Jason提到的,你可能需要函数记忆之类的东西 下面是另一个关于它的线索: 您还可以使用与面向方面编程相关的原则来实现这种功能
可能就是您要找的。请参阅stackoverflow中有很多关于此的线程,例如。
int res = add10(5); // invoking the delegate rather than calling function