C# 在执行被调用函数之前执行代码

C# 在执行被调用函数之前执行代码,c#,C#,我希望能够以某种方式标记一个函数(可能是属性?),这样当从任何地方调用它时,其他一些代码可以处理参数并返回一个值,而不是调用的函数,或者可以让函数正常执行 我会使用它来轻松缓存 例如,如果我有一个名为Add10的函数,它会如下所示: int Add10 (int n) { return n + 10; } 如果函数使用相同的值(Add10(7))重复调用,它将始终给出相同的结果(17),因此每次重新计算没有意义。当然,我不会用这么简单的函数来做,但我相信你能理解我的意思 C#提供了我想

我希望能够以某种方式标记一个函数(可能是属性?),这样当从任何地方调用它时,其他一些代码可以处理参数并返回一个值,而不是调用的函数,或者可以让函数正常执行

我会使用它来轻松缓存

例如,如果我有一个名为Add10的函数,它会如下所示:

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