gpt4 book ai didi

c# - 在 C# 中将一个 else 与多个 if 语句一起使用

转载 作者:行者123 更新时间:2023-12-05 01:48:11 26 4
gpt4 key购买 nike

有没有办法在C#中快速检查如下逻辑?

if (a)
{

}
if (b)
{

}
if (c)
{

}
else //none of the above, execute if all above conditions are false
{
/* do something only if !a && !b && !c */
}

这与使用 if-else 的不同之处在于 abc 都可以为真一次,所以我不能那样堆叠它们。

我想在 abc 都为 false 时运行 else block 而不写 if (!a && !b && !c)。这是因为当 if 条件变得更复杂时,代码会变得相当困惑。它需要重写大量代码。

这可能吗?

最佳答案

首先,noelse block 仅尊重if 子句紧接在它们之上,因此您将需要一个替代方案。

这个选项不是特别“干净”,但我会这样做:

bool noneAreTrue = true;
if(a)
{
noneAreTrue = false;
}
if(b)
{
noneAreTrue = false;
}
if(c)
{
noneAreTrue = false;
}
if(noneAreTrue)
{
//execute if all above conditions are false
}

此外,如果您的条件真的非常大,我推荐 Robert C. Martin 的 Clean Code 一书中的规则 G28(封装条件)。

相当冗长,但在某些情况下更容易阅读:

public void YourMethod()
{
if(SomeComplexLogic())
{
}
if(SomeMoreLogic())
{
}
if(EvenMoreComplexLogic())
{
}
if(NoComplexLogicApply())
{
}
}

private bool SomeComplexLogic(){
return stuff;
}

private bool EvenMoreComplexLogic(){
return moreStuff;
}

private bool EvenMoreComplexLogic(){
return evenMoreStuff;
}

private bool NoComplexLogicApply(){
return SomeComplexLogic() && EvenMoreComplexLogic() && EvenMoreComplexLogic();
}

关于c# - 在 C# 中将一个 else 与多个 if 语句一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com