如果只有一个特定条件为真而没有其他条件,如何返回 false?

问题描述 投票:0回答:1

在以下(转述的)代码中,我正在检查各种条件,更新它们,并安排单个通知,无论条件更改的数量有多少。如果条件没有改变,则不应发出任何通知。此外,还有一种特殊条件,如果发生变化,不会触发通知。

public bool Update() {
    bool shouldNotify = false;

    if (SpecialConditionChanged())
        UpdateSpecialCondition();
    
    if (Condition1Changed()) {
        UpdateCondition1();
        shouldNotify = true;
    }

    if (Condition2Changed()) {
        UpdateCondition2();
        shouldNotify = true;
    }

    ...

    return shouldNotify;
}

这段代码可以工作,但是非常冗长且重复,每次都必须设置标志。我想问是否有更优雅或更有效的解决方案。如果零个条件或仅特殊条件发生变化,则返回 false,但如果任何剩余条件发生变化,则返回 true。

我考虑过使用

bool[]
(同样冗长);我考虑过使用计数器(同样重复);我考虑过添加一个额外的 if
or
是所有条件一起更改布尔值一次(有很多条件),但我想到的没有比这个版本更干净的了。

我是否缺少一些可以让这个看起来或工作得更好的东西?

c# boolean-logic
1个回答
1
投票

只需更改为

bool shouldNotify = true;

if (SpecialConditionChanged())
{
    UpdateSpecialCondition();
    shuoldNotify = false;
}
© www.soinside.com 2019 - 2024. All rights reserved.