【发布时间】:2016-04-01 18:28:17
【问题描述】:
请检查以下功能:
public void DoJob()
{
CheckPrivilege();
DoJob2();
}
public void DoJob2()
{
CheckPrivilege();
DoJob3();
}
如您所见,如果我调用DoJob(),CheckPrivilege() 函数会运行两次。有时我可以直接调用DoJob2(),所以我无法从DoJob2() 中删除CheckPrivilege() 函数。
所以我需要知道CheckPrivilege() 函数是在同一个调用堆栈中的另一个函数中调用的。
也就是说,我想通过调用堆栈共享一个 Privilege 对象。
这可能吗?如果是,怎么做?
【问题讨论】:
-
c# 还是 c?发布问题时请花更多时间。你的问题也不清楚。我没有投反对票,所以给我一个不这样做的理由。告诉我们您的目标到底是什么,否则您将没有收到圣诞老人的任何礼物。
-
我只是在用 c# 编辑帖子,所以我很伤心,我想通过调用堆栈共享一个实例。例如我想在 DoJob() 函数中存储一个实例,然后在 DoJob2() 函数中我想检查调用堆栈中是否有任何存储的实例
-
提问的动机是什么?调用成本高还是您只是想避免重复代码?
-
是的 CheckPrivilege() 非常昂贵,并且在许多函数中都会调用它。有时它会执行 7-8 次并给出与前一次调用完全相同的结果