C# 比较成对布尔的更简单方法?

C# 比较成对布尔的更简单方法?,c#,comparison,boolean,C#,Comparison,Boolean,假设我有以下问题: 伊萨 isB isC 我存在 I存在B I存在C 当isA、isB或isC为真时,如果所有真布尔值对应的isExisting布尔值也为真,我想做点什么。如果isA、isB或isC为假,则其对应的ISEXIST bool并不重要 以下是我的想法: if ((isA || isB || isC) && ((!isA || isExistingA) && (!isB || isExistingB) && (

假设我有以下问题:

  • 伊萨
  • isB
  • isC
  • 我存在
  • I存在B
  • I存在C
当isA、isB或isC为真时,如果所有真布尔值对应的isExisting布尔值也为真,我想做点什么。如果isA、isB或isC为假,则其对应的ISEXIST bool并不重要

以下是我的想法:

if ((isA || isB || isC)
    && ((!isA || isExistingA)
    && (!isB || isExistingB)
    && (!isC || isExistingC)))
{
    // do something
}

我今天显然不能思考,我想知道是否有更简单的方法来表达这一点。

问题在于,尽管只有一个isX变量必须为真,但所有isX变量都必须检查。所以我不认为你可以用更少的“比较”来写一个陈述


我认为您当前的解决方案是最短的形式,但是如果我在没有解释的情况下阅读代码,我可能不看两遍就无法理解它(虽然我认为实际名称更具描述性,对读者来说可能更有意义)。

Wolfram Alpha可以简化布尔方程,试试这个


然而,在我看来,不要太担心这一点,保持if语句干净易读比担心紧凑性或性能更重要。

对我来说似乎是合理的,尽管
&&
是关联的,所以你不需要在第二行和第三行周围加上额外的参数。@Neil:我认为这些额外的参数使它更可读。另外,@John Straka:你使用多行和缩进的方式使语句更容易阅读:)缺少的运算符是。似乎不值得添加。我通常将它们分组到方法中,以使
if
语句在变得如此复杂时更具可读性。我同意,这有点迟钝。不过,对于企业名称来说,这更有意义。