c# - 当在 C# 中调用任何其他方法时,如何自动重置 bool 值?

标签 c# set call flags

使用 C#,如果函数 A() 在函数 C() 之前被调用,我需要做一些额外的工作。如果在 A()C() 之间调用了任何其他函数,那么我不想做那些额外的工作。有什么想法需要最少的代码重复吗?

我试图避免在每个函数 B1..BN 中添加类似 flag = false; 的行。

这是一个非常基本的例子:

bool flag = false;

void A()
{
    flag = true;
}

void B1()
{
    ...
}

void B2()
{
    ...
}

void C()
{
    if (flag) 
    {
        //do something
    }
}

上面的例子只是使用了一个简单的例子,但我愿意使用 bool 值以外的东西。重要的是我希望能够设置和重置某种标志,以便 C() 知道如何相应地运行。

感谢您的帮助。如果您需要澄清,我会编辑我的帖子。

最佳答案

为什么不将您的“额外工作”分解为一个内存函数(即缓存其结果的函数)?每当您需要这项工作时,只需调用此函数,如果缓存是新的,它就会短路。每当该工作变得陈旧时,使缓存无效。在你上面相当奇怪的例子中,我假设你需要在每个 B 中调用一个函数,在 C 中调用一个函数。调用 A 将使缓存无效。

如果您正在寻找解决方法(即一些聪明的方法来捕获所有函数调用并插入此调用),我真的不会打扰。我可以设想一些疯狂的运行时反射代理类生成,但你应该让你的代码流清晰明了;如果每个函数都依赖于已经完成的工作,只需在每个函数中调用“doWork”即可。

关于c# - 当在 C# 中调用任何其他方法时,如何自动重置 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2626021/

相关文章:

c# - 是一个字段,但像类型错误一样使用

python - 如何避免重新散列字典键?

C# 类引用的对象集

python - Python 中的列表减法

android - 任何免费服务器在 android 中集成 VoIp 功能?

c# - C# 和 javascript 中 guid 的相同哈希值

c# - 在 C# 中下载 HTML 页面

c# - WCF – SSL – 客户端身份验证 – 无法在 Windows 7 上实现,而我可以在 Windows XP 上实现

javascript - 为什么代码放在return语句后面,它会被执行吗?

Python 函数调用真的很慢