本文介绍了在C#中将另一个语句与多个IF语句一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法在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
的不同之处在于,a
、b
和c
可以同时为真,因此我不能以这种方式堆叠它们。
当a
、b
和c
均为false而不写if (!a && !b && !c)
时,我想运行Else挡路。这是因为当if条件变得更加复杂时,代码可能会变得相当混乱。它需要重写大量代码。
这可能吗?
推荐答案
首先,no,else
块仅与其正上方的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#中将另一个语句与多个IF语句一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!