在C#if语句中检查多个布尔条件的最佳方法

Pho*_*_uy 8 c# if-statement boolean

我有我的代码(C#)和3个布尔int32那要看是什么布尔是财产truefalse.什么是最好的方式,以另一种方式实现这一点,而不是如下语句:

if(a && b && !c)
   d = 1;
if(a && !b && !c)
   d = 2;
//etc.. ect...
Run Code Online (Sandbox Code Playgroud)

编辑:3个布尔值必须具有可能的每个组合来设置int32值.

编辑2:对于两个不同的布尔比较,"d"的值可以相同.

Dav*_*yon 28

最好捕获操作的意图,而不是显式检查布尔值.

例如:

public void Check()
{
   if (HasOrdered())
   {
      // do logic
   }
}

private bool HasOrdered()
{
    return a && !b && !c;
}

private bool HasBooked()
{
    return a && b && !c;
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*r83 11

您可以使用卡诺图来减少方程式并减少ifs.

https://en.wikipedia.org/wiki/Karnaugh_map

  • 一些示例 C# 代码会很好...:) (3认同)
  • @Ramhound很多人会更喜欢写出它出现的逻辑_,而不是它最终如何有效地结合?K-maps专注于结果_only_并且无情地消除输入中不再影响结果的任何信息.因此,该信息从来源不再明显.Hene,来源不再是功能需求的反映.这是_harder_证明是正确的,而不是_easier_.更难维护(修改).相反,通常你应该让编译器担心优化(即使在内联之后也会发生). (2认同)